我正在開發與Android Annotations的Android應用程序。對於持久性,我首先在SQLite之上使用了一個Content Provider(非常複雜)。然後,我發現了Realm。它似乎非常酷,直到我必須被通知插入,使我的RecyclerView動態。爲了通知插入,我創建了一個叫做RealmProxy的單例類,使用copyToRealm()
的代理方法,以及一個實現爲RealmListener
的接口。我在我的copyToRealm()
方法中調用了註冊偵聽器,向他們傳遞了添加的RealmObject,因此我可以填充我的SortedList(支持庫列表,設計用於RecyclerView)RecyclerView適配器。我還使用我的RealmListener
接口在保存後立即通過網絡發送新的對象。Android中JPA的領域或紙張?
編譯並運行後,我得到了和IllegalStateException
(不正確的線程域的訪問。境界對象只能創建它們的線程上進行訪問。),因爲我是從UI線程獲取領域實例,但我寄過去網絡在後臺線程顯然。爲什麼我會得到這個錯誤?每當我的JSON序列化庫LoganSquare(基於Jackson在後臺調用我的RealmObject
上的獲取器以通過網絡發送)時,將拋出此異常。這讓我討厭Realm線程策略以及細粒度通知不是內置的事實。此外,Realm不允許我定義任何自定義方法。我甚至無法在Realm對象中實現Comparable
。
當我今天看到Paper(感謝Android Arsenal和Pushbullet)時,我對一個沒有頭痛的JPA解決方案非常感興趣。看起來很簡單,對列表,地圖和任何沒有擴展特殊類的類都沒有限制(Realm需要擴展RealmObject並使用RealmList,而不是通用列表,這是java不喜歡的,我強迫我複製列表)。
編輯: 今天我發現SnappyDB。它使用與Paper相同的序列化庫(Kryo),它看起來與Paper非常相似,具有更多用於密鑰管理的功能。
所以我的問題是:
我應該尋找解決辦法,並繼續使用領域,如果是,其變通方法,或者我應該使用Paper,或SnappyDB呢?有沒有人使用Paper或SnappyDB爲Android?
所有最優秀的
請問你目前Realm的問題是什麼?是否在線程間使用Realm和RecyclerView?這個[類似的問題](http://stackoverflow.com/questions/28995380/best-practices-to-use-realm-with-a-recycler-view)有幫助嗎? – beeender
當我在後臺和UI中使用相同的'RealmObject'時,我得到了描述'IllegalStateException'。由於我的應用程序是RESTful的,我必須在後臺處理網絡,但是我每次在Realm中添加一個對象時都不得不重新查詢,這是不切實際且效率低下的。 –