假设有一个Activity A1
为Process P1
,而Activity A1
启动为Activity A2
为Process P2
。活动A2将需要处理很多事情,使系统不得不杀死RAM的P1。我不知道会发生什么。
我现在看到的是,如果在启动Process P1
之后强制通过Application Manager
杀死Activity A2
,当我退出“设置”屏幕时,活动A2也消失了。
在按下“强制停止”按钮之前,活动堆栈如下所示:
Home -> A1 -> A2 -> Settings -> Apps -> App info(of P1)
在我点击它之后,看起来会像这样:
Home -> Settings -> Apps -> App info
虽然我只杀死了A1的进程,但是A2也被破坏了。
一切顺利。我认为没有人希望A1被摧毁时A2仍然活着。但我想知道A1被杀死后A2是否有可能存活,而我的程序必须研究这种情况:
Home -> A2
A2完成后,将创建A1以接受A2的结果。
进行了更多的“研究”。如果A1启动A2,并且内存不足,则4.0.3仿真器将杀死P2而不是P1。即使它是前台活动,也就是A2将关闭。
最佳答案
启动时的活动保存在Back-Stack上,浏览的每个活动都保存在该堆栈上,当继续进行另一个活动时,可以使用finish()方法杀死该活动,因此该活动的另一个实例是冲浪回到相同的活动时,不再将其再次推入堆栈。
例如:
A1 ----> A2 -----> A3
A1的第一个实例进入堆栈
A2的第一个实例进入堆栈
A3的第一个实例进入堆栈
A1 <---- A2 <----- A3
A1的第二个实例进入堆栈
A2的第二个实例进入堆栈
A3的第二个实例进入堆栈
因此,当您不使用finish()方法时,无法通过杀死A1来杀死A2。 A2在堆栈中存活。