當我的應用程序啓動並且逼真時,它會拉出一些json數據,一旦數據被拉出,我真的不需要在用戶體驗期間再次拉動它。後端數據最多可能每天更新幾次,所以我想我只需在應用程序啓動時獲取數據,然後在該持續時間內使用相同的數據,併爲用戶提供手動刷新數據的選項。所以,我的問題是,我應該在哪裏/如何存儲這些數據?我已經建立了所有的數據結構(類和子類)。有些類可能有200個左右的例子。如果我將所有內容都作爲成員變量存儲在我的activity_main類中,則一旦其他活動啓動,它就不能用於其他活動。將它們全部存儲在數據庫中可能是一種選擇,但它有點過度。我真的不需要數據在會話之間持續。有沒有一種方法可以輕鬆地將其存儲在內存中,並且仍然可以輕鬆訪問所有活動?Android在哪裏存儲緩存的數據?
回答
您應該考慮操作系統在內存不足的情況下終止您的應用進程,因此將數據備份到磁盤上是一件好事。這樣做,您可以從磁盤緩存中顯示用戶數據,同時在服務器的後臺刷新它。
選擇數據存儲工具取決於您需要使用數據的方式。
當然,還有就是用Realm一種選擇,但你應該考慮的是,它是不關係數據庫。因此,如果您的業務邏輯具有複雜的連接域和其他關係類型的域模型,我會選擇其他類型的域。它是線程安全的,也有遷移(但是,對我而言,遷移總是很痛苦,你不能做任何關於它的事情)。領域現在應該是RxJava友好的(支持在v0.87中添加)有一些disadvantages(其中一部分可能已經被修復),但在使用前應該考慮它。
至於多個關係的方法,有SQLBrite庫:
周圍SQLiteOpenHelper甲輕量級封裝其引入反應性流語義來SQL操作。
它不是一個ORM(但如果你願意,你可以在SQLBrite上添加某種吧:see this獲取更多信息)。事實上,這個庫本身就是在做一件事情(並且做得很好) - 它提供了一種協調和組織表更新通知的機制(Realm也有這樣的能力),這樣你就可以更新查詢(採用SQL方式)只要數據發生變化。它尊重RxJava! 作爲SQLBrite的替代品,您可以查看StorIO。
也有很多不同的ORM解決方案,如GreenDAO,ORMLite等
但我敢肯定,前兩個庫(領域或SQLBrite)可能會幫你的一個。因此,分析你的應用程序,這些庫,並決定什麼更適合。
P.S. Great article關於RxJava如何幫助您輕鬆處理來自不同數據源(內存緩存+磁盤緩存+網絡)的數據。可能有幫助!
我仍然會推薦一個SQLite數據庫,你可以很容易地將它聲明爲'內存中'的數據庫,如果這是你想要的。
但是....如果它一遍又一遍地下載冗餘數據,我會比較不滿意你的應用程序的用戶。我只是建議製作一個內容提供商並完成它。這使您可以訪問SyncAdapter,並在代碼的去向之間定義明確的邊界。
製作一個好的ContentProvider的'技巧'是製作出好的POJO,它具有從POJO - > ContentValues和Cursor - > POJO(s)轉換的方法。
最簡單的事情就是將json文件存儲在Apps數據存儲中,並在每次需要時解析json。
但是,這是不建議,因爲它是每次解析數據昂貴。
最好的選擇是要實現Realm(替換Sqlite),這是很容易實現,它的速度驚人。
- 1. 哪裏使存儲緩存?
- 2. 在哪裏存儲數據?
- 3. 數據存儲在哪裏?
- 4. DNS緩存爲Ubuntu存儲在哪裏?
- 5. 緩存在哪裏保存?
- 6. 哪裏AngularJS存儲高速緩存數據
- 7. C#在哪裏緩存大數據表
- 8. ObjectDataSource緩存數據在哪裏?
- 9. 我的BigQuery數據存儲在哪裏?
- 10. ByteArray的數據存儲在哪裏?
- 11. 在哪裏存儲我的數據?
- 12. 在哪裏存儲jquery的數據?
- 13. EXCEL Sheet的數據在哪裏存儲?
- 14. 存儲MongoDB的數據在哪裏SailsJS
- 15. ProfileBase.Save()存儲我的數據在哪裏?
- 16. UDP存儲的數據在哪裏?
- 17. cck「數值」數據存儲在哪裏?
- 18. Redis在哪裏存儲數據
- 19. 常量數據應存儲在哪裏?
- 20. 存儲視圖數據在哪裏?
- 21. Content Provider在哪裏存儲數據?
- 22. H2數據庫存儲在哪裏?
- 23. Magento訂單數據存儲在哪裏?
- 24. Tridion存儲元數據值在哪裏?
- 25. HttpRuntime.Cache在哪裏存儲數據?
- 26. KeyChain數據存儲在哪裏?
- 27. Titanium:SQLite數據庫存儲在哪裏?
- 28. Drupal在哪裏存儲NODE數據?
- 29. ServiceWorker數據存儲在哪裏?
- 30. mysql在哪裏存儲數據?
您應該考慮到您的用戶可以將應用程序置於後臺,打開Chrome瀏覽器,播放視頻,回到您的應用程序,並且您下載的所有數據都將因進程死亡而丟失,您必須下載他們再次。 – EpicPandaForce