我正在使用以下代码段来检查我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()
是我唯一的追索权吗?
答案 0 :(得分:5)
对于许多人来说,这是一个混乱的领域,如this other thread中所示。
事实上,即使来自像O'Reilly这样受人尊敬的来源的this book,也可以通过暗示 Destroyed 状态可能意味着“被杀”并且可以从onDestroy()
或进程被杀:
恕我直言,O'Reilly状态图存在缺陷,并未像“官方”图表那样反映系统的完整行为:
分析此图表,可以得出结论onDestroy()
永远不会自动导致应用程序进程被杀死。我相信这回答了你的第一个问题。
至于你的第二个问题,答案是是:如果你真的想彻底杀死你的申请流程(你为什么要这样做?),那么你唯一的办法就是{{3 }}