2013-07-12 120 views
2

根据Android docs,活动的生命周期如下:的Android间活动的生命周期

  • 的onCreate()
  • 在onStart()
  • 的onResume()
  • 的onPause()
  • onStop()
  • onDestroy()

问题是,如果我有两个活动(A和B),并且它们不是异常死亡(低内存等):

如何执行顺序,当一个人进入后台而另一个人恢复时/产生的?

  • ...
  • A.onPause()
  • B.onCreate()
  • A.onStop() - B.onStart()同时
  • B.onResume()
  • ...

这是保证按照任何特定的顺序工作?在每个Android版本中?

Regads

回答

5

按照图你就会明白,当一个活动去后台等来前景会发生什么。

enter image description here

在步骤2中MainActivity从屏幕消失,但留在存储器,并没有被破坏。但是在步骤3中,ActivityTwo在屏幕消失后立即被破坏。并且在最后的第4步中MainActivity被销毁了。

这是bcos,当Activity_A调用Activity_B时,Activity_B放在任务的顶部并接收焦点。 Activity_A保留在任务中,但处于停止状态(不可见并且未聚焦)。在此之后,当用户在Activity_B打开时点击后退按钮,Activity_B将从任务中删除并销毁。并且Activity_A现在位于任务的顶部并获得焦点。

活动按照打开的顺序存储在任务中(并添加到任务中)。他们没有在任务内以任何方式排序或排序。任务中的活动集也称为回栈。我会把它叫做堆栈。

该图(从官方网站)演示了一个例子:

enter image description here

+0

出色答卷!请,你可以添加你获得信息的链接吗? – Cheborra

+0

它在android doc.check中有链接:http://developer.android.com/guide/components/tasks-and-back-stack.html –

+0

谢谢@Shankarivatsalkumar很好的解释! –