假设有一个Activity A1Process P1,而Activity A1启动为Activity A2Process 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在堆栈中存活。

10-06 12:42
查看更多