和其他程序不一样的是,activity不是使用main()函数开始程序,Activity实例调用不同的回调函数对应它的生命周期的不同阶段。这里是安装一个顺序去启动一个activity,并且按照一个顺序去关闭activity。
这节课提供一个生命周期方法的概述,展示了怎么操作第一个回调函数去创建一个新的activity实例。
理解生命周期回调函数
在activity的生命中,系统安装顺序调用生命周期函数的过程类似一个金字塔。生命周期的每个阶段就想金字塔的每一层。系统启动一个新的activity,调用一个个回调函数,就像一步步的到达金字塔顶端。这个顶端就是activity处于前台状态的时候,用户这时可以和它交互。
当用户离开activity的时候,系统调用另外一些回调函数,让activity状态回到金字塔的底部。有时候activity只是走下金字塔的一部分,然后在那里等待(就想用户切换到了其他程序),activity可以从这里重新回到顶端(用户返回activity),处于前台运行状态。
基于你的activity的复杂度,你可能不必要实现所有的回调函数。不管怎样,理解它们,并且按照用户期望的行为方式实现它们是很重要的。为了确保你的程序保持良好,合理的实现activity生命周期函数有很多方法:
如果用户接电话或者切换到其他程序时,你的程序不能崩溃。
当用户不使用它时不要浪费宝贵的系统资源。
当用户暂时离开程序的时候,不要丢失用户的进度。
旋转屏幕的时候不要崩溃和丢失用户进度。
从上面的图我们可以看出,一个activity会在不同的状态间转换。不过只有3个状态的静态的。一段时间中,activity只能处于3个状态中的一个:
Resumed
这个就是activity处于前台时的状态。
Paused
处于这个状态,activity是被其他activity是部分掩盖着的 - 这个其他activity可能是半透明的,或者是没有完全覆盖整个屏幕的。这个状态下,activity不能接受用户的输入,也不能执行任何代码。
Stopped
这个状态下,activity是不可见的,它在系统后台运行着。当stopped的时候,activity实例和他的信息状态像成员变量一样被保留,也不能执行任何代码。
其他状态(Created和Started)是短暂的,系统只是快速的经过这些状态到底其他状态。比如,系统调用完onCreate()函数后,很快就调用onStart(),接着很快又调用onResume()。
这些就是生命周期的基础知识,下面我们将要学习一些特定的生命周期行为。
指定你程序的启动Activity
当用户点击图标启动程序的时候,系统会调用你声明为"launcher"(或者"main")的activity中的onCreate()函数。这个activity就是你的程序界面的主入口。
主activity必须在清单文件中使用