Android上的活动娱乐

时间:2013-03-31 08:12:11

标签: android android-activity

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

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

(系统引发的破坏) “如果系统因系统限制而破坏活动(而不是正常的应用程序行为),那么虽然实际的Activity实例已经消失,系统会记住它存在,如果用户导航回它,系统会创建一个新的实例该活动使用一组保存的数据来描述活动被销毁时的状态。“

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

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

系统具有资源意识,可以破坏活动以恢复内存。如果系统执行该操作,则会留下一个选项,以便在以后需要时将已销毁的活动恢复到其先前的状态。

State = view-state(默认,自动完成)+ member-variable-state(手动,直到程序员)。

我的问题是,如果系统正在销毁活动以释放一些内存,那么如果它允许我们保留活动的“副本”以便活动可以恢复,那么它是否会失败目的 到达与销毁之前完全相同的程度?

1 个答案:

答案 0 :(得分:0)

不,它没有打败目的:

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