假设有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将被关闭,即使它是前台活动。
答案 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在堆栈中存活。