簡體   English   中英

Realm for Java/Android - 保留查詢/結果的狀態

[英]Realm for Java/Android - preserving the state of query/result

在目前正在開發的項目中,我們正在將Realm 數據庫集成到客戶的應用程序中,以提高響應能力,同時處理約 20.000 條記錄的龐大數據集。 對於屏幕演示,我們正在整合Realm 的 Android Recyclerview 大多數用例是讀取操作,其次是高級搜索和/或記錄過濾的可能性。

在我們的某些視圖中,鞋夾的地方在於,從給定類型的所有數據中,應該只顯示一部分記錄,由后端選擇。 使用 API 傳遞的信息,我們執行初始過濾並設置視圖。

現在,使用上述技術,是否有一種可讀和可維護的方式來存儲這個預先過濾的子集或獲取它的查詢以供進一步參考,以便一旦搜索視圖和/或過濾器,視圖的初始狀態總是可以恢復被清除了嗎? 還是應該存儲 API 響應並重新應用通過它給出的條件是唯一的方法? 將任何新條件應用於查詢似乎會永久改變它,將新查詢應用於結果也是如此。 難道不應該有一種方法可以根據舊的結果集為自己創建一個新的結果集,但又不會干擾后者嗎?

編輯:我們的應用程序是“雙語”的,歡迎使用基於 Java 和 Kotlin 的解決方案,如果它們不同的話。

正如我們在本周早些時候意識到的那樣,正如@EpicPandaForce 在評論中提到的那樣,雖然RealmQuery對象不能通過在擴展之前將其分配給備用變量來“快照”,但RealmResults並非如此對象。 所以:

RealmResults<Obj> widerResults = realmInstance.where(Obj.class).in("id", idArray).findAll;
RealmResults<Obj> narrowerResults = widerResults.where().equalTo("flag", true).findAll;

將提供兩個獨立的結果集。 可以根據我強調的用例使用更廣泛的一個 - 將其視為進一步子查詢的起點。 在集合中發現的對象更改仍將反映在兩個集合中。

如果他們像我們一樣陷入困境,為所有迷失的靈魂提供答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM