-2

我开发了一个安卓应用程序。它工作正常,但是当用户在他的手机中有高级应用程序杀手并用它杀死应用程序时,当你再次打开它时,应用程序会崩溃。这是因为应用程序杀手正在删除我的应用程序的全局变量的所有内容。有没有办法阻止这种情况?

其他解决方法可能像我的应用程序的 onResume() 如果它被应用程序杀手杀死,我想重新启动应用程序。这个怎么做?

4

2 回答 2

0

你必须实现这样的回调onSaveInstanceState-

protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);    
        outState.putInt("param1", yourGlobalIntVariableName);
        outState.putString("param2", yourGlobalStringVariableName);
    }

在你的onCreate你应该看看你的savedInstanceState变量是否不为空,如果它不为空,你必须采取saveInstanceState

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(savedInstanceState != null) {
            yourGlobalIntVariableName = savedInstanceState.getInt("param1");
            yourGlobalStringVariableName = savedInstanceState.getString("param2"));
        }
}

那应该可以解决问题。

如果您有 Android 4.0 测试设备,请转到设置 -> 开发人员选项 -> “不保留活动”

核实。然后运行您的应用程序。看看它是否工作正常。理想情况下应该。操作系统可以杀死你后台堆栈中的一些活动,你的应用程序应该能够处理它。此开发人员选项将为您提供一种测试此类情况的方法。一旦你进入下一个活动,它就会从内存中删除上一个活动。

于 2012-11-30T12:22:36.877 回答
0

如果您的应用程序被杀死,下次启动时它将从头开始,因此onCreate将被调用。

现在您声称您的应用程序被杀死然后onResume被调用。这没有任何意义。如果onResume被调用,那么您的应用程序可能已进入后台,因此onPause必须在此之前调用。检查是否onPause被调用并尝试弄清楚到底发生了什么。

于 2012-11-30T12:12:01.700 回答