Android 从任务杀手操作或缓存中恢复清除

Android 从任务杀手操作或缓存中恢复清除,android,task,kill-process,clear-cache,Android,Task,Kill Process,Clear Cache,我希望我的应用程序从任务杀手操作或缓存清除中恢复。情景如下 启动应用程序 按主页按钮 杀死所有应用(或清除缓存) 从最近的任务启动应用程序 在这种情况下,应用程序将崩溃。我观察到,如果应用程序通过任务杀手应用程序或清除缓存被杀死,应用程序不会被正确杀死。它的一些内存被删除,但最后一个状态保留在最近的任务中。所以,当用户试图从最近的任务中打开应用程序时,应用程序会因为丢失一些全局或静态变量而崩溃 这种情况令人讨厌;在任务杀手操作或缓存清除之后,不会调用onDestroy()方法。(我的应用程序有一

我希望我的应用程序从任务杀手操作或缓存清除中恢复。情景如下

  • 启动应用程序
  • 按主页按钮
  • 杀死所有应用(或清除缓存)
  • 从最近的任务启动应用程序
  • 在这种情况下,应用程序将崩溃。我观察到,如果应用程序通过任务杀手应用程序或清除缓存被杀死,应用程序不会被正确杀死。它的一些内存被删除,但最后一个状态保留在最近的任务中。所以,当用户试图从最近的任务中打开应用程序时,应用程序会因为丢失一些全局或静态变量而崩溃

    这种情况令人讨厌;在任务杀手操作或缓存清除之后,不会调用onDestroy()方法。(我的应用程序有一个主FragmentActivity,其他片段由该主活动控制,因此,如果我能检测到我的活动的onDestroy(),我可以正确地杀死它)


    关于如何解决这个问题有什么想法吗?提前感谢。

    问题在于任务杀手的存在:它们是无用的,伊姆霍。有关更多信息,请参阅。

    我通过使用生命周期差异来解决此问题

    如果调用了home按钮,则会调用onStop(),但如果关闭了应用程序,则会调用onStop()和onDestroy(),这意味着如果任务在后台被终止,则不会调用onDestroy()。我通过SharedReferences跟踪这种情况

    @Override
    protected void onStop() {
        SharedPreferencesUtilities.putBoolean("isFromOnStop", true);
        super.onStop();
    }
    
    @Override
    protected void onDestroy() {
        SharedPreferencesUtilities.putBoolean("isFromOnStop", false);
        super.onDestroy();
        android.os.Process.killProcess(android.os.Process.myPid());
    }  
    
    然后在onCreate()中,我检查了这个SharedReferences布尔值

    if(SharedPreferencesUtilities.getBoolean("isFromOnStop", false)) {
        SharedPreferencesUtilities.putBoolean("isFromOnStop", false);
            ((MainFragmentActivity)mContext).finish();
            Toast.makeText(mContext, "Ooops app was killed in background", Toast.LENGTH_SHORT).show();
    }
    

    不管你对任务杀手的看法是什么,在被任务杀手杀死后,当应用程序恢复运行时,应用程序的状态仍然存在问题。@rajath,这就是投否决票的原因吗?如果你杀了一个应用程序,你会期待什么?如果被安卓系统杀死,问题还在吗?