进程被终止时的Android活动堆栈依赖性

时间:2012-06-03 09:58:30

标签: android process android-activity lifecycle

假设有Activity A1 Process P1 Activity A1 Activity A2 Process P2 Process P1。活动A2将需要处理很多事情,使系统必须杀死P1 for RAM。我想知道会发生什么。

正如我现在所看到的那样,如果我在Application Manager启动后强制通过Activity A2杀死Home -> A1 -> A2 -> Settings -> Apps -> App info(of P1) ,当我退出设置屏幕时,活动A2也会消失。< / p>

在点击“强制停止”按钮之前,活动堆栈看起来像这样:

Home -> Settings -> Apps -> App info

在我点击之后,它看起来会像这样:

Home -> A2

虽然我只杀了A1的过程,但是A2也被破坏了。

一切顺利。我认为当A1被摧毁时,没有人希望A2仍然活着。但是我想知道在A1被杀之后A2是否有可能保持活着,我的程序必须考虑这样的情况:

{{1}}

当A2完成时,将创建A1以接受来自A2的结果。


做了一些“研究”。如果A1启动A2,并且当内存不足时,4.0.3仿真器将杀死P2而不是P1。那就是A2将被关闭,即使它是前台活动。

1 个答案:

答案 0 :(得分:0)

启动时的活动保存在Back-Stack上,每个浏览过的活动都保存在这个堆栈上,finish()方法可以用来在移动到另一个活动时杀死活动,所以另一个实例是当冲浪支持同一活动时,相同的活动不再被推入堆栈。

例如:

A1             ---->            A2            ----->             A3

A1的第一个实例进入了Backstack
A2的第一个实例进入了backstack
A3的第一个实例进入了Backstack

A1             <----            A2            <-----            A3

A1的第二个实例进入了backstack
A2的第二个实例进入了Backstack
A3的第二个实例进入了Backstack

因此,当您不使用finish()方法时,无法杀死A1杀死A2。 A2在堆栈中存活。