现在的位置: 首页 > 综合 > 正文

[Android基础]Android Activity生命周期管理

2014年08月16日 ⁄ 综合 ⁄ 共 1834字 ⁄ 字号 评论关闭

本篇文章翻译自Android官方的培训教程,我也是初学者,觉得官方的Training才是最好的学习材料,所以边学边翻译,有翻译不好的地方,请大家指正。

         当用户在我们开发的App的各个Activity之间不断切换的时候,实际上Activity的各个生命周期的展示。例如,当Activity第一次启动的时候,它就会显示在手机前台并且接收用户的交互。在这个过程中,Android系统调用Activity的一系列生命周期函数,在这些生命周期函数中我们定义了用户接口以及其他的组件。如果用户执行了启动其他Activity或者启动其他App的操作,此时这个Activity又会调用一系列的生命周期方法,同时这个Activity进入后台工作模式(所谓的“后台工作模式”,就是此Activity对用户不可见,但是该Activity的实例及其状态仍然存在)。

           在这些生命周期的回调方法中,我们可以定义当然用户离开或者重新打开该Activity的一些Activity所要执行的操作。例如,如果用户正在使用一个音乐播放器,当他切换到其他App的时候,这个音乐播放器应该暂停运行并且断开网络连接。当用户重新回到音乐播放器,需要重新连接网络并且继续从上次的暂停点继续播放。

           本课程讲解了一些Activity生命周期中的重要的回调方法,以及我们该如何使用这些回调方法来达到良好的用户体验,同时又不会消耗不必要的系统资源。

第一章 启动Activity

          Android的启动与其他Java项目通过main()入口启动不同,Android系统的启动Activity的实例是通过调用特定生命周期的特定的回调方法。在Android系统中,启动与停止Activity都有相应的一系列的回调方法。

          本章为大家整体介绍一下生命周期中的重要的回调方法,同时介绍如果处理在创建一个新的Activity实例的时候所调用的回调方法。

1.1 理解生命周期的回调方法

         在Activity的整个生命周期中,Android系统将顺序调用一系列生命周期方法,类似于从金字塔的底部,一步步走上金字塔的顶端。意思就是,Activity的每个生命周期的方法都是一个走上金字塔的台阶。当系统创建一个新的Activity的实例,每个生命周期回调方法都会将该Activity的状态移动到下一个状态,直到到达顶点。这里的金字塔的顶点,就是Activity成功启动后,在前台运行同时可以与用户进行交互的状态。

        当用户离开这个Activity的时候,系统又将调用一系列其他的生命周期回调方法,将Activity的状态从金字塔的顶端,移动到底端。但是要注意,有的时候Activity的状态只需要移动一部分(并不一定从运行的状态到销毁的状态),比如可能仅仅到了暂停的状态,用户可以从该状态再次回到金字塔顶端(运行状态)。

图1. 简化的Activity生命周期图

根据你所设计的Activity的复杂度,并不一定需要实现生命周期中的所有的方法。然后,对于完整生命周期中的所有的方法理解是非常重要的,这可以确保你所设计的Activity按照用户的期待运行。正确合理的实现相应的生命周期方法,需要按照下面的标准来执行:

  • 当用户接到电话或者切换到其他App的时候,你所设计的App不能crash。
  • 当用户不与该Activity进行交互的时候,不能消耗太多的系统资源。
  • 不能丢失用户的状态,当用户离开之后再回来,可以继续该状态。
  • 屏幕翻转的时候不能丢失用户的状态。

其中有三个生命周期是最基本的:

Resumed
这该生命周期,用户可以与Activity进行交互。
Paused
在该生命周期,Activity部分被遮挡,另一个Activity是半透明或者部分遮挡该Activity。该状态下Activity不能接收用户的数据,也不能执行任何的操作。
Stopped
在该生命周期,Activity完全不可见,可以认为已经进入后台工作。当停止之后,Activity的实例和状态信息都被保存,但是不能执行任何的操作。

其他的一些状态都是瞬时状态,系统都会很快进入这些瞬时状态的下一个生命周期状态。比如,当系统调用onCreate()方法之后,会立即调用onStart()方法,然后又快速调用onResume()方法。

这是基本的Activity生命周期,后面将继续学习生命周期中的行为。

(未完待续)

抱歉!评论已关闭.