android应用程序类变量变为null

时间:2014-02-28 14:07:40

标签: dalvik android

在我的应用中,我将一些数据存储在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应用程序暂时不使用,它会自动杀死该应用程序,但我该怎么办才能解决这个问题?

3 个答案:

答案 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。