getRunningAppProcesses()返回已销毁的进程

时间:2012-08-07 23:50:11

标签: android android-activity activity-lifecycle

我正在使用以下代码段来检查我finish()编辑的应用程序是否确实不再运行:

ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procList = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo proc : procList)
    Log.d(TAG, proc.processName);
}

令我沮丧的是,我finish()编辑的一些应用程序(在他们的Activity.onCreate()中,甚至在他们有机会发布任何内容之前)仍然会列在那里。

为什么?

LogCat显示这些应用程序'onDestroy() 肯定是被调用。

从该列表中真正删除某个应用程序需要什么?

killProcess()是我唯一的追索权吗?

1 个答案:

答案 0 :(得分:5)

对于许多人来说,这是一个混乱的领域,如this other thread中所示。

事实上,即使来自像O'Reilly这样受人尊敬的来源的this book,也可以通过暗示 Destroyed 状态可能意味着“被杀”并且可以从onDestroy()进程被杀

enter image description here

恕我直言,O'Reilly状态图存在缺陷,并未像“官方”图表那样反映系统的完整行为:

enter image description here

分析此图表,可以得出结论onDestroy()永远不会自动导致应用程序进程被杀死。我相信这回答了你的第一个问题。

至于你的第二个问题,答案是:如果你真的想彻底杀死你的申请流程(你为什么要这样做?),那么你唯一的办法就是{{3 }}

相关问题