当Android破坏内存应用程序时,处理活动/应用程序还原

时间:2014-04-05 20:27:51

标签: java android android-intent

我刚遇到一场撞车,我不确定正确的处理方式。我的应用程序有几个"经理"缓存整个应用程序中使用的一些信息。这些存储在我自己的Application类实现中。

当我的应用程序被最小化并且另一个应用程序启动时,手机可能会因为大量使用其他应用而导致内存不足。如果是这样,我的应用程序可以从内存中清除。

重新启动我的应用后,尝试重新创建上次打开的活动。但是我的整个应用程序中的管理员现在都是null,并且我的应用程序在尝试从中引用信息时会遇到NullPointerExceptions。

我应该如何处理这种情况?有没有办法阻止上一个活动被打开如果我的应用程序似乎被其他应用程序的内存破坏?我可以从应用程序重新开始(重新初始化我的经理和缓存数据)。

2 个答案:

答案 0 :(得分:0)

您可以让每个活动onCreate()告诉应用程序在尚未初始化的情况下进行初始化。

答案 1 :(得分:0)

由于我依赖确保用户登录到我的应用程序的单个变量(OAuth令牌),我决定添加一个检查以查看每个活动的onCreate中是否为null。我没有一个有效的案例,它应该为null(除了在启动器活动之外),所以检查它是有意义的。

如果该令牌为空,我只需启动一个带有FLAG_ACTIVITY_CLEAR_TOP的LauncherActivity,以便清除堆栈上所有先前的活动,并且应用程序基本上从头开始备份。

希望这能找到有类似情况的其他人。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    manager = MyApplication.class.cast(getApplicationContext()).getManager();
    Token token = manager.getToken();
    if(null == token) {
        Log.w("MyActivity", "Token is null");
        Intent intent = new Intent(this, LauncherActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
        return;
    }
    ...
}