正如在开发指南中所述,在“应用程序进程被杀死”和“用户导航到活动”之后,活动可以恢复。首先,我从未见过这样的事情发生过。当它的进程被杀死时,我似乎不能“导航回”一个Activity,在进程消失后,Activity就会从堆栈中消失。
如果发生这种情况,究竟会发生什么?
我看到一个奇怪但好的事情是:
有一个Activity A1
启动另一个应用的Activity A2
。现在A2
是前台活动。当内存变低时,至少在模拟器上(我可以很容易地占用RAM),A2
将被杀死,而不是A1
。
我担心的是这样的事情:
我的应用在堆栈上有两个活动,我们称之为A0
和A1
。并且A1
再次启动了另一个应用的Activity A2
。当A0
即将启动A1
时,它会为A1
提供对数据对象D
的引用。现在,如果在{A2}处于前台时A0
和A1
的处理被杀死,D
也会丢失。当A2完成后,似乎至少需要恢复A1
。因此A1
必须处理D
的恢复。更重要的是,A1必须找到一种方法来告诉尚未死亡的A0
对已恢复的D
的引用。这是复杂的还是我走错了路?
答案 0 :(得分:7)
系统将尽一切可能使前台应用程序保持活跃状态。
当进程即将被终止时,系统会保存用于启动活动的Intent
。
这样,一旦用户返回已被杀死的应用程序,则应用程序将被恢复,并且会触发相同的Intent
以启动活动,包括它可能具有的所有额外内容。
这意味着您传递到Intent
以启动活动的任何数据在活动恢复时仍然存在。
您可能不会注意到它,但Android会在日常使用中杀死并重新创建进程,这就是平台提供的无缝多任务处理的重点。
您应该始终使用“开发”设置中的“请勿保留活动”选项测试您的应用。