【问题标题】:Android inter-Activity life cycleAndroid跨Activity生命周期
【发布时间】:2013-07-10 12:57:11
【问题描述】:

根据Android docs,Activity生命周期如下:

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

问题是,假设我有两个活动(A 和 B)并且它们没有被异常杀死(内存不足等):

一个去后台,另一个恢复/创建的执行顺序是怎样的?

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

此保证适用于任何特定订单吗?在每个 Android 版本中?

问候

【问题讨论】:

    标签: android android-activity lifecycle


    【解决方案1】:

    按照图表,您将了解当一个活动进入后台而另一个活动进入前台时会发生什么。

    在第 2 步中 MainActivity 从屏幕上消失了,但留在内存中并没有被销毁。但是在第 3 步中,ActivityTwo 在它从屏幕上消失后就被销毁了。并且在最后的第4步中MainActivity被销毁了。

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

    活动按照打开(并添加到任务)的相同顺序存储在任务中。它们在任务中没有以任何方式排序或排序。任务中的一组活动也称为回栈。我将它称为 - 堆栈。

    图表(来自官方网站)演示了一个示例:

    【讨论】:

    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2016-11-15
    • 2011-07-29
    相关资源
    最近更新 更多