3

我正在学习android应用程序开发。我正在阅读有关系统如何管理活动的信息。

通过阅读文档。这是混乱。

  1. 我创建具有 3 个活动 A1、A2、A3 的应用程序 A(从主屏幕)[这是任务 A]
  2. 我创建了具有 3 个活动 B1、B2、B3 [这是任务 B] 的应用程序 B(从主屏幕),其中 A1 和 B1 分别是应用程序 A 和 B 中的堆栈顶部。

根据文档系统,仅推送和弹出活动(没有重新排序,这对堆栈有意义)但是,它指出系统可以在没有足够内存可用的情况下回收内存。并且选择要删除系统的活动总是选择在后台的活动。所以说它的去除活动A3。但是 A3 在堆栈的底部。如何在不重新排序应用程序 A 的堆栈的情况下删除 A3?

我希望我的问题很清楚

谢谢你,

4

2 回答 2

1

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

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

于 2013-03-08T17:31:40.910 回答
0

正如您正确指出的那样,Android 系统不会重新排序堆栈。它遵循流程生命周期,其中包含活动的流程被终止,而不是堆栈上的单个活动。请记住,默认情况下,每个应用程序都是维护活动堆栈的单独进程。所以应用 A 和应用 B 的 Activity 堆栈将是独立的。

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

于 2013-03-08T17:44:37.657 回答