2

我正在阅读有关管理活动生命周期的官方 Android 教程。请看我引用的以下几点。

(正常的应用程序行为)“当您的 Activity 因用户按下 Back 或 Activity 自行完成而被销毁时,系统对该 Activity 实例的概念将永远消失,因为该行为表明不再需要该 Activity。”

(系统诱导销毁)“如果系统由于系统限制(而不是正常的应用程序行为)而销毁 Activity,那么尽管实际的 Activity 实例已经消失,但系统会记住它的存在,因此如果用户导航回它,系统使用一组保存的数据创建一个新的活动实例,这些数据描述了活动被销毁时的状态。”

“系统用来恢复之前状态的保存数据是存储在Bundle对象中的键值对的集合。默认情况下,保存的信息是关于活动的视图层次结构,例如在小部件中输入的文本,滚动位置等。要为您的活动保存额外的状态信息,例如成员变量,您必须实现 onSaveInstanceState() 并将键值对添加到 Bundle 对象。”

请看我是否可以从上面正确总结:

该系统具有资源意识,可以破坏活动以恢复记忆。如果系统这样做了,那么它会留下一个选项,如果以后需要的话,可以将被破坏的活动恢复到之前的状态。

状态 = 视图状态(默认,自动完成)+ 成员变量状态(手动,由程序员决定)。

我的问题是,如果系统正在销毁活动以释放一些内存,那么如果它允许我们保留活动的“副本”以便活动可以准确地恢复到点,那么它是否会破坏目的和毁灭前一样?

4

1 回答 1

2

不,它不会破坏目的:

  • ABundle针对可序列化进行了优化,因此 Android 框架可以将其写入磁盘。
  • 表示状态所需的数据远小于运行应用程序副本所需的 RAM 量。例如,如果您向用户显示图像,您可能只需要保存图像的位置,而不是保存图像的所有数据。此外,每个 Android 应用程序都是一个全新的 Dalvik VM,所以如果所有活动都来自不同的应用程序,杀死一个活动意味着少一个 Dalvik VM - 每个 Dalvik VM 可能需要相对大量的 RAM。
于 2013-03-31T08:19:30.753 回答