2013-10-02 36 views
18

SharedPreferences有多快?有沒有辦法讓他們在閱讀的記憶?我有一個ListView必須查詢以顯示每個單元格的少量數據,我擔心對閃存的調用會太慢。我不擔心寫入速度,因爲寫入很少發生。我正在考慮只使用JSON對象來保存數據而不是SharedPreferences。思考?SharedPreferences的讀取速度

+0

SharedPreferences本質上是一個駐留在應用程序「沙箱」存儲中的xml文件。它可以通過亞行訪問和查看。 – hakanostrom

回答

35

有沒有辦法將它們放在內存中閱讀?

它們在第一次參考後在內存中。您第一次檢索特定的SharedPreferences(例如,PreferenceManager.getDefaultSharedPreferences())時,數據將從磁盤加載並保留。

+2

你說,一旦你得到'PreferenceManager.getDefaultSharedPreferences()'的實例,'SharedPreferences'中的整個保存數據就會被加載。 –

+6

@MoshErsan:是的。 'SharedPreferences'被保存在'ContextImpl'的'SharedPreferences'的靜態'HashMap'中。它將一直存在,直到過程終止。請參閱https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java中的'sSharedPrefs' – CommonsWare

+1

這樣做的好處是什麼? –

-1

我有一個小的數據量是一個ListView具有查詢到 顯示每個單元

你不能讓一個Singleton,一個共同的類,然後從第二次從那裏看了嗎?我會這樣做。

+0

沒有必要通過單例增加共享全局狀態。 Android已經通過'SharedPreferences'和'Bundles'爲全球狀態管理提供瞭解決方案。這就夠了。你應該儘可能地消除全球狀態 –

13

我的建議是首先測試你的表現,然後開始擔心速度。一般來說,您會對可維護性和速度優先的應用感到高興。當工程師在應用程序穩定之前就開始實現性能時,結果是一個運行速度更快但具有大量錯誤的應用程序。