野人学Android基础篇之四大组件第一课--Activity的生命周期

来源:互联网 发布:udp端口在线扫描 编辑:程序博客网 时间:2024/05/17 23:11

今天是9月3日,上午的阅兵式离我很远,但是又那么近。70年前的小米加步枪,70年后的东风加歼15,告诉我们,只有不懈的坚持,才会有璀璨的未来!


有了前面的基础练习,想必大家对Activity有点熟悉了吧。可能大家会说,Activity很简单啊,系统会自动生成,我只要写点执行代码就ok啦。其实不然,Android的开发者给Activity赋予了更多的功能,不仅仅是系统生成的那么简单。

本节课主要围绕下面三个问题进行展开。

1.Activity的生命周期包括哪些,含义是什么

2.Bundle是一个什么样类型的对象?

3.OnCreate 的参数savedInstanceState是什么,怎么用?


Activity的生命周期

世上万物,有生就有灭,不管生的时间有多长,其最终消亡的规律是一致的。Activity有诞生,那么就有消亡。Activity的生命周期是怎样的一个过程呢?Android开发者从app的实际需求出发,赋予了Activity下面六个生命阶段:onCreate()、onStart()、onResume()、onPause、onStop和onDestroy()。这么抽象的介绍,说实话,我第一次也不是很明白,下面就一一解释下吧。

OnCreate()      Activity的启动和初始化,可以参考下onCreate()应该做哪些事

onStart()           用户可见,但不能交互

onResume()    获得焦点,与用户可以交互

onPause()        失去了焦点,但是可见

onStop()           失去了焦点,并不可见

onDestroy()     销毁Activity,释放内存

如果大家有兴趣的话,可以运行一个包含Activity生命周期中所有阶段的程序,看下它们的运行顺序是不是按照我说的这样进行。当然,为了大家更好地理解这些生命函数的意义,我会在下一篇博文中会探讨下多个Activity之间交互引起的Activity生命周期的变化。


Bundle类

细心的你可能会发现onCreate()的方法有一个参数,其类型是Bundle,这是一个可以储存键值对的类,其文档的解释是“A mapping from String values to various Parcelable types.”,具体的解释可以参考Bundle详解。要强调的是,Bundle可以在Activity之间传递,并且所能传递数据的大小在0.5M以下,也就是说只能传递一些简单的数据。


savedInstanceState参数

知道Bundle的意思,那么savedIntanceState呢?按照字面上的意思,是被保存的实例状态。在Android中,有一个方法和这个参数相关联,就是onSaveInstanceState()怎么理解呢?正常情况下,Activity会通过返回键调用onDestory,也就是人为操作区销毁Activity,那么onSaveInstanceState()就不会被调用,只有当系统原因导致系统销毁的时候,才会调用这个方法,来保存一些重要的信息,以便下次启动时能正常操作。详细的可以参考IntanceSate详解。

<pre name="code" class="java">
写于2015年9月4日凌晨11分

0 0
原创粉丝点击