在我的应用中,我将一些数据存储在Application
类中:
public HashMap<String, HashMap<String, String>> getConfigs() {
if (mConfigs != null) {
return mConfigs;
}
}
public void setConfigs(HashMap<String, HashMap<String, String>> configs) {
mConfigs = configs;
}
然后我从Activity
调用它以供进一步使用:
public String getValueByTag(String tag){
return MyApplication.getInstance().getValueByTag(tag);
}
当我按下主页按钮并稍后运行时(即1小时后),它会以NullPointerException
崩溃。
我知道如果Android应用程序暂时不使用,它会自动杀死该应用程序,但我该怎么办才能解决这个问题?
答案 0 :(得分:1)
将您的数据存储在SharedPreferences或DB中。您还可以将它们放入JSONObject并将其以文件形式存储在app文件夹中。每次调用setConfigs时,或者在活动onPause中,您都必须进行此类序列化。在Application.onCreate中,您将恢复mConfigs。
答案 1 :(得分:0)
已复制this链接。
不要依赖静态数据成员或自定义Application
子类实例。在许多情况下,您的流程将被终止,并且这些值将消失。它们应该用于持久内容的内存缓存,而不是其他内容。
答案 2 :(得分:0)
在Android系统中,正如您在问题中所说,该过程可能会被系统管理员杀死。但正如我所知,你可以让你的mConfigs为静态变量, NOT 是GC。在 Dalvik 中,即使不使用该类, NOT 也会被卸载。
但如果你的进程被杀了,你应该在Activity.onCreate
中重新加载你的mConfigs。