Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将SharedReference用作磁盘缓存是否是一种良好的做法?_Android_Sharedpreferences_Android Lifecycle - Fatal编程技术网

Android 将SharedReference用作磁盘缓存是否是一种良好的做法?

Android 将SharedReference用作磁盘缓存是否是一种良好的做法?,android,sharedpreferences,android-lifecycle,Android,Sharedpreferences,Android Lifecycle,我需要缓存一个对象,以便在我的应用程序中的每个活动和片段中访问它 我试图使它成为静态的,但是,不幸的是,有时Android操作系统会使这个静态为空,这会无缘无故地使我的应用程序崩溃 那么,使用SharedReferences和Gson来序列化和 将对象缓存到磁盘上?一般来说,您不应该过多地使用SharedReferences,因为它的速度不如本地数据库的,但实际上,如果数据集不太大,并且只需要一个简单的缓存,您可以使用它 一个简单的替代方法是使用 一般来说,你不应该过多地使用SharedRefe

我需要缓存一个对象,以便在我的应用程序中的每个
活动
片段
中访问它

我试图使它成为静态的,但是,不幸的是,有时Android操作系统会使这个静态为空,这会无缘无故地使我的应用程序崩溃

那么,使用
SharedReferences
Gson
来序列化和
将对象缓存到磁盘上?

一般来说,您不应该过多地使用
SharedReferences
,因为它的速度不如本地数据库的,但实际上,如果数据集不太大,并且只需要一个简单的缓存,您可以使用它


一个简单的替代方法是使用

一般来说,你不应该过多地使用
SharedReferences
,因为它的速度不如本地数据库的,但实际上,如果你的数据集不太大,而且你只需要一个简单的缓存,你就可以使用它


一个简单的替代方法是使用

SharedReference
用于存储会话之间应保留的数据

如果在应用程序启动之间需要该对象,则可以使用SharedReference


对于您的问题,SharedReference是一个快速的解决方案,但是我仍然鼓励您查找静态变量为null的原因。

SharedReference设计用于存储会话之间应保留的数据

如果在应用程序启动之间需要该对象,则可以使用SharedReference


对于您的问题,共享参考是一个快速解决方案,然而,我仍然鼓励您找出静态变量为空的原因。

是使用
SharedReferences
file
并将文件存储在内部存储器中。是使用
SharedReferences
file
并将文件存储在内部存储器中。它是一个仅包含8个变量的对象。但是在每项活动中都会大量使用。因此我想在每项活动开始时使用SharedReferences是的,在
onCreate
onResume
中从SP加载数据并将其保存在经典成员中。顺便说一句,不要在SP.editorit上使用
commit
,使用
.apply()
。editorit是一个仅包含8个变量的对象。但是在每项活动中都会大量使用。因此我想在每项活动开始时使用SharedReferences是的,在
onCreate
onResume
中从SP加载数据并将其保存在经典成员中。顺便说一句,不要在SP.edit上使用
commit
,使用
.apply()
,因为Android操作系统会自动为对象设置空值以释放一些内存。所以空值的问题就随机出现了。android操作系统在使用静态变量时不会这样做。一定还有别的原因。你是如何得出操作系统使其为空的结论的?这发生在我身上,我在这里读到了:发现了类似的东西。不过,将整个对象存储在共享首选项中似乎是一个糟糕的设计。这就是安卓操作系统自动为对象设置空值以释放一些内存的原因。所以空值的问题就随机出现了。android操作系统在使用静态变量时不会这样做。一定还有别的原因。你是如何得出操作系统使其为空的结论的?这发生在我身上,我在这里读到了:发现了类似的东西。不过,将整个对象存储在共享首选项中似乎是一种糟糕的设计。