2015-10-06 79 views
1

我需要緩存一個對象來訪問它,我的應用程序中的每一個和每個ActivityFragment將SharedPreferences用作磁盤緩存是否是好習慣?

我試圖讓它成爲static,但不幸的是,有時Android操作系統會將這種靜態爲空,導致無應用程序崩潰。

因此,使用SharedPreferencesGson來串行化並且 緩存磁盤上的對象是一種很好的做法嗎?

+0

是使用'SharedPreferences'或'file'並將文件存儲在內部存儲器中。 – Rustam

回答

2

Generaly,你不應該使用太多SharedPreferences因爲它速度比不上本地數據庫,但實際上,你可以,如果你的組數據是不是太大,如果你使用它只是想要一個簡單的緩存。

一個簡單的選擇是使用Realm

+0

它是僅包含8個變量的單個對象。但在每個活動中都有深入的使用..所以我想在每個活動開始時使用SharedPreferences – MBH

+1

是的,在'onCreate'或'onResume'從SP加載數據並將其保存在經典成員中。順便說一句,不要使用'commit',在SP.editor –

1

sharedPreferences旨在存儲應在會話之間保留的數據。

如果您需要該應用程序啓動之間的對象,那麼可以使用sharedPreference。

對於你的問題sharedPreference是一個快速解決方案,但我仍然鼓勵你找到你的靜態變量爲null的原因。

+1

上使用'.apply()',因爲Android操作系統會自動清零對象以釋放內存。所以null的問題隨機顯示 – MBH

+1

AFAIK android操作系統不這樣做與靜態變量。一定有其他原因。你是如何得出操作系統使其爲空的結論? –

+0

它發生在我身上,我實際上在這裏閱讀它:http://stackoverflow.com/a/16736271/2296787 – MBH

相關問題