2

假设有一个Activity A1ofProcess P1Activity A1launch Activity A2of Process P2。Activity A2 将需要处理很多使系统不得不为 RAM 杀死 P1 的事情。我想知道会发生什么。

正如我现在所看到的,如果我在启动后强制终止Process P1Application ManagerActivity A2我退出设置屏幕时,Activity 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 将被关闭,即使它是前台活动。

4

1 回答 1

0

Activity 启动时保存在 Back-Stack 中,浏览过的每个 Activity 都保存在此堆栈中,finish() 方法可用于在移动到另一个 Activity 时杀死该 Activity,因此同一 Activity 的另一个实例是当冲浪回到相同的活动时,不会再次推入堆栈。

例如:

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

A1 的第一个实例进入后台堆栈
A2 的
第一个实例进入后台堆栈 A3 的第一个实例进入后台堆栈

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

A1 的第二个实例进入后台堆栈
A2 的
第二个实例进入后台堆栈 A3 的第二个实例进入后台堆栈

所以当你不使用finish()方法时,杀死A1是不可能杀死A2的。A2 在堆栈中存活。

于 2012-06-03T10:56:36.193 回答