这个问题可能看起来太常见了,我在SO和其他网站上查了很多帖子但是我没有得到任何正确的答案我正在搜索
保存常用数据的最佳方法是什么?
这里“经常使用的数据”是指所有那些不值得在数据库或共享首选项中保存的数据,也不是每次都可以获取的数据,例如设备的高度和宽度,数据库路径,数据库名称
我通常将所有这些数据保存在一个单独的类中,其中所有变量通常都是静态的。 我在应用程序启动时或在基本活动中获取此数据,并在必要时使用它,可能在活动中,或在适配器中,或任何解析器类等。
当手机需要更多内存时,每个人都知道静态数据被清除,但即使我也以共享偏好保存所有数据,我也无法在每次需要时获取共享首选项或数据库的上下文数据。并且必须从任何类访问这些变量。
在我的应用程序中,我将此类命名为AppConstant,并且我的所有数据都保存在此类中的静态变量中,但如果我打开5-6个其他应用程序,则所有数据都将被清除。
所以,当我再次打开我的应用程序时,再次在onCreate()中创建视图,现在我正在检查活动内部,如果AppConstant中的所需数据被清除,如果已清除我正在从中获取它共享偏好。
但我希望有更好的选择。有没有? 请帮帮我。
由于
答案 0 :(得分:0)
首先,当内存不足时,操作系统不会“清除”静态数据。这就是它的表现,但事实并非如此。例如,如果您使用单例类,它将保持不变。发生的事情是操作系统正在杀死你的应用程序以释放内存。重启后(假设它在大约30分钟内发生),操作系统将恢复它被杀死之前的状态。从本质上讲,它会重新启动应用程序进入后台时可见的活动。如您所知,活动可以被杀死并轻松重新启动(例如,当您旋转设备时)。
但是,如果您在应用程序的第一个活动中创建单件,当操作系统重新启动您的应用程序时,它将不会出现 - 因此操作系统似乎已“清除”您的单例中的数据。
检查onCreate()中是否存在静态数据的解决方案将起作用,我认为这是唯一的解决方案。