安卓生命周期——简要介绍

Translated and edited the page Android Develop Traning Starting an Activity.

这篇博客将概略的介绍最重要的一些生命周期概念。

在安卓中,一个Activity实例初始化代码都是被特定的回调方法(callback method)调用的,而不是像其他程序一样从main()启动,这些回调方法与该Activity所处的生命周期(lifecycle)的阶段有关。一个Activity从建立到消亡的过程中,有一系列的回调方法来管理它。

理解生命周期回调方法


在activity的生命过程中,安卓系统将调用一系列的生命周期回调方法,这些方法组成了一个生命周期“金字塔”,如Figure 1所示。Activity的每一个生命阶段都是这个生命周期“金字塔”中的独立一级。当系统创建了一个新的Activity的实例之后,每一个回调方法将推动这个activity的状态一步一步走向“金字塔”的顶端。这个“金字塔”的顶端就是该activity前端显示,并且用户能够和该activity交互。


Translated and edited the page Android Develop Traning Starting an Activity.  这篇博客将概略的介绍最重要的一些生命周期概念。  在安卓中,一个Activity实例初始化代码都是被特定的回调方法(callback method)调用的,而不是像其他程序一样从main()启动,这些回调方法与该Activity所处的生命周期(lifecycle)的阶段有关。一个Activity从建立到消亡的过程中,有一系列的回调方法来管理它。    理解生命周期回调方法   在activity的生命过程中,安卓系统将调用一系列的生命周期回调方法,这些方法组成了一个生命周期“金字塔”,如Figure 1所示。Activity的每一个生命阶段都是这个生命周期“金字塔”中的独立一级。当系统创建了一个新的Activity的实例之后,每一个回调方法将推动这个activity的状态一步一步走向“金字塔”的顶端。这个“金字塔”的顶端就是该activity前端显示,并且用户能够和该activity交互。   Figure 1.Activity 生命周期“金字塔”示意图。这张图展示了每个回调方法如何一步一步将activity推向“金字塔”顶端——Resumed状态。当然还有一些回调方法是将activity推下“金字塔”的。处于Paused和Stopped状态的activity也能够回到Resumed状态  当用户离开这个activity时,为了能够销毁这个activity,系统将调用其他回调方法推动activity的状态走下“金字塔”。在有些情况中,activity只是走到“金字塔”的中间,并等待用户(例如,当用户切换到其他app时)。在“金字塔”中间时,activity能重新回到“金字塔”的顶端(如果用户切换回到这个activity),并从用户暂离时的地方继续。  你可以选择不实现所有的生命周期方法,当然这取决于你的Activity的复杂性。然而,弄懂、实现每一个方法有利于你的app运行良好。正确实现你的Activity的方法确保你的app运行正常,需要注意:  如果用户收到来电或者切换到别的app,你的app不会崩溃。 当用户离开一个Activity后,它不会继续消耗宝贵的系统资源。 用户暂时离开Activity时,请不要丢失用户离开前的进度。 用户在竖屏、横屏之间切换时,确保Activity不会崩溃或者丢失用户进度。 接下来的博客将会介绍Activity状态转换的情形。Figure 1中展示了生命周期的不同状态,然而其中只有三个状态是静态的,即,只有这三个状态中的某一个状态能维持一段时间:  Resumed 在这个状态下,Activity是前段显示的,用户能够与之交互。(有时又被称作“Running”状态) Paused 在这个状态下,Activity被其他Activity部分遮挡,例如其他前端显示的Activity是半透明的或者没有全屏覆盖。处于Paused状态下的Activity不能够接受用户输入,也不能执行任何代码。 Stopped 在这个状态下,Activity是完全被隐藏的,对用户来说该Activity是不可见的。处于Stopped状态的Activity仍然能够保持其状态信息(例如,成员变量),但是不会执行任何的代码。 其他状态(Created和Started)都是瞬时状态,系统将通过调用相应的回调方法,很快的将处于这两个状态的Activity推进向下一个生命周期状态。当系统调用onCreate()后,将很快地调用onStart(),紧接着将调用onResume()。 这就是基本Activity的生命周期介绍。下一篇博客中,将具体介绍特定的生命周期行为。


Figure 1.Activity 生命周期“金字塔”示意图。这张图展示了每个回调方法如何一步一步将activity推向“金字塔”顶端——Resumed状态。当然还有一些回调方法是将activity推下“金字塔”的。处于Paused和Stopped状态的activity也能够回到Resumed状态。(图片来自  Android Develop Traning Starting an Activity

当用户离开这个activity时,为了能够销毁这个activity,系统将调用其他回调方法推动activity的状态走下“金字塔”。在有些情况中,activity只是走到“金字塔”的中间,并等待用户(例如,当用户切换到其他app时)。在“金字塔”中间时,activity能重新回到“金字塔”的顶端(如果用户切换回到这个activity),并从用户暂离时的地方继续。

你可以选择不实现所有的生命周期方法,当然这取决于你的Activity的复杂性。然而,弄懂、实现每一个方法有利于你的app运行良好。正确实现你的Activity的方法确保你的app运行正常,需要注意:
  • 如果用户收到来电或者切换到别的app,你的app不会崩溃。
  • 当用户离开一个Activity后,它不会继续消耗宝贵的系统资源。
  • 用户暂时离开Activity时,请不要丢失用户离开前的进度。
  • 用户在竖屏、横屏之间切换时,确保Activity不会崩溃或者丢失用户进度。
接下来的博客将会介绍Activity状态转换的情形。Figure 1中展示了生命周期的不同状态,然而其中只有三个状态是静态的,即,只有这三个状态中的某一个状态能维持一段时间:

  • Resumed
在这个状态下,Activity是前段显示的,用户能够与之交互。(有时又被称作“Running”状态)
  • Paused
在这个状态下,Activity被其他Activity部分遮挡,例如其他前端显示的Activity是半透明的或者没有全屏覆盖。处于Paused状态下的Activity不能够接受用户输入,也不能执 行任何代码。
  • Stopped

在这个状态下,Activity是完全被隐藏的,对用户来说该Activity是不可见的。处于Stopped状态的Activity仍然能够保持其状态信息(例如,成员变量),但是不会执行任何的代码。


其他状态(Created和Started)都是瞬时状态,系统将通过调用相应的回调方法,很快的将处于这两个状态的Activity推进向下一个生命周期状态。当系统调用onCreate()后,将很快地调用onStart(),紧接着将调用onResume()。


这就是基本Activity的生命周期介绍。下一篇博客中,将具体介绍特定的生命周期行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值