Android后台堆栈和内存回收

时间:2013-03-08 17:21:24

标签: android android-activity

我正在学习Android应用开发。我正在阅读系统如何管理活动。

阅读this文档。这是混乱。

  1. 我用3个活动A1,A2,A3创建app A(从主屏幕)[这是任务A]
  2. 我用3个活动B1,B2,B3创建应用B(从主屏幕)[这是任务B] 其中A1和B1分别是app A和B中堆栈的顶部。
  3. 根据文档系统,只推送活动(No 重新排序,这对堆栈有意义)但是,它表明系统可以在没有足够内存可用的情况下回收内存。 并选择要删除系统的活动总是选择背景中的活动。所以说吧 删除活动A3。但A3位于堆栈的底部。如果没有重新排序应用A的堆栈,它如何删除A3?

    我希望我的问题清楚

    谢谢,

2 个答案:

答案 0 :(得分:1)

从内存中删除活动时,不会更改后台堆栈。

但是,当用户点击后退按钮并返回到已回收的活动时,那么您没有专门保存在onSaveInstanceState()中的任何状态(并从savedInstanceBundle参数重新加载onCreate())将会丢失。

答案 1 :(得分:0)

Android系统没有正确指出重新排序堆栈。它遵循Process Lifecycle,其中包含活动的进程终止,而不是堆栈上的单个活动。请记住,默认情况下,每个应用程序都是一个单独的进程,其中维护活动堆栈。因此,应用A和应用B的活动堆栈将是独立且独立的。

例如,任务A在后台有A1,A2和A3活动。任务A是一个过程。当android需要回收内存时,它将终止进程任务A,其中包含所有活动A1,A2,A3。因此,目前任务A中哪个活动位于堆栈顶部并不重要。