4

正如开发指南中所说,活动可以在“应用程序进程被终止”和“用户导航到活动”之后恢复。首先,我从来没有见过这样的事情发生。当它的进程被杀死时,我似乎无法“导航回”到一个 Activity,在进程消失后,Activity 只是从堆栈中消失了。

如果发生这样的事情,它究竟会如何发生?

我看到一个奇怪但好的事情是:有一个Activity A1启动Activity A2另一个应用程序。现在A2是前台活动。当内存变低时,至少在模拟器上(我可以很容易地吃掉内存),A2将被杀死而不是A1.

例如,我担心的是这样的事情:我的应用程序在堆栈上有两个活动,我们称它们为A0and A1。并且A1,再次推出Activity A2了另一个应用程序。当A0即将启动A1时,它给出A1了一个数据对象的引用D。现在,如果在 A2 处于前台时杀死A0and的进程,也会丢失。当A2完成后,似乎至少需要恢复。因此将不得不处理. 更重要的是,A1 必须找到一种方法来告诉仍然死去的人对 restore 的引用。这很复杂还是我走错了路?A1DA1A1DA0D

4

1 回答 1

7

系统将尽其所能保持前台应用程序的活动。

Intent进程即将被杀死时,系统会保存用于启动活动的内容。

这样,一旦用户返回到已被杀死的应用程序,应用程序就会恢复并Intent触发相同的活动以启动活动,包括它可能拥有的所有额外内容。

这意味着您传递Intent给启动活动的任何数据,在活动恢复时仍然存在。

您可能没有注意到它,但 Android 确实会在日常使用中杀死并重新创建进程,这就是该平台提供的无缝多任务处理的全部意义所在。

您应该始终使用“开发”设置中的“不保留活动”选项来测试您的应用程序。

于 2012-08-13T05:26:15.527 回答