2015-10-06 47 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

相关问题