getRunningAppProcesses()返回被摧毁过程(getRunningAppProce

2019-09-21 00:17发布

我使用下面的代码片段来检查我的应用程序是否finish() ED确实不再运行:

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

令我感到沮丧,一些应用程序,我finish() ED(在他们Activity.onCreate(),他们有机会推出,甚至任何东西前),仍列出。

为什么?

logcat的显示,这些应用程序onDestroy() 中绝对称得上。

怎样才能真正删除从该列表中的应用程序?

killProcess()我唯一的办法?

Answer 1:

这是混淆了很多的区域,如中可以看到这个其他线程 。

事实上,即使这本书从一个受人尊敬的来源,如奥赖利可以通过暗示销毁状态可能意味着“封杀”,它可以从到达混淆事态onDestroy()被杀的过程

恕我直言,是O'Reilly的状态图是有缺陷的,“官”图并不能反映系统的全部行为:

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

至于你的第二个问题,答案是肯定的:如果你真的想要彻底杀死你的应用程序的进程(?为什么你想这样做),那么你唯一的办法就是killProcess() 。



文章来源: getRunningAppProcesses() returns processes that were destroyed