参考 :任玉刚的Android开发艺术探索。

Activity是四大组件之一,简称活动,是使用的最频繁的组件。

activity的生命周期分为两部分内容,一部分是典型情况下的生命周期,另一部分是异常情况下的生命周期。

典型情况下的生命周期是指有用户参与的情况下,Activity所经过的生命周期的改变。

异常情况下的生命周期是指Activity被系统回收或者设置横竖屏(当前设备的configuration发生改变)而导致Activity被销毁重建。

正常情况下Activity的生命周期:

(1) onCreate:表示当前Activity正在被创建,这是生命周期的第一个方法。在这个方法中我们可以设置视图setContentView(R.layout.id),初始化Activity所需要的数据。

(2) onRestart:表示当前Activity正在重新启动,一般情况下Activity从不可见变为可见会调用。什么情况下会调用这个方法,

当用户按home键或者用户intent到一个新的Activity时,调用onPause 和onStop方法,用户又从新回到这个Activity的时候

就会掉用这个方法onCreate。

(3) onStart :表示当前Activity正在被启动,这时Activity已经可见,但还在后台还没有出现在前台,还无法与用户交互。

(4) onResume: 表示Activity已经可见,用户可以进行操作。在这个方法也能做数据保存,但不建议在这里面进行操作,因为会

影响新的Activity的显示。

(5) onPause:表示Activity正在停止,正常情况下会紧接着调用onStop方法,极端情况下,刚停止,紧接着有想回到当前Activity就会调用onResume方法,这中情况很难出现。在这个方法中可以存储数据,停止动画等操作,但不能太耗时,否则会影响新Activity的显示,因为onPause必须先执行完,新的Activity才会执行onResume方法(6) onStop :表示Activity即将停止,可以做些轻量级的回收工作,但不能太耗时。

(7) ondestory:表示Activity即将被销毁,在这里可以回收工作和最终资源释放。

典型情况下的生命周期:

会增加两个生命周期的方法:

 onSaveInstanceState 和onRestoreInstanceState 来保存数据和恢复数据。

 这里增加一个知识点,如果不想让Activity在屏幕旋转的时候不被重新创建,可以在清单文件中,当期Activity的标签中添加属性

configChanges属性,值为orientation|screenSize。

 configChanges的常用值有这几个:local,orientation,keyboardHidden 。

Activity的四种启动模式:

  standard:标准模式,这是系统默认的启动模式,每次启动一个Activity都会创建一个新的实例,不管这个Activity是否已经存在。

singleTop:栈顶复用模式,在这中模式下,如果你创建的Activity已经存在任务栈的顶端,那么这个Activity就不会创建,

如果新的Activity不在任务栈的顶端,不管是否存在都会被创建。

singleTask:栈内复用模式 只要任务栈内存在,就不会被创建。

singleInstance:单实例模式。会创建一个新的任务栈,并创建一个新的Activity。