Activity生命周期
Activity从启动到销毁的过程。
Activity的4种状态
- 活动状态
- 暂停状态
- 停止状态
- 非活动状态
Activity栈
栈顶的Activity处于活动状态,除栈顶以外的其他Activity处于暂停状态或停止状态,而被终止的Activity或已经出栈的Activity则不在栈内。
随着用户在界面进行的操作,以及Android系统对资源的动态管理,Activity不断变化其在Activity栈中的位置,状态也不断在4种状态间转变。随着Activity自身状态的变化,Android系统会调用不同的事件回调函数,开发人员在事件回调函数中添加代码,就可以在Activity状态变化时完成适当的工作。
Activity事件回调函数
1.Activity生命周期的事件回调函数
函数 | 是否可终止 | 说明 |
---|---|---|
onCreate() | 否 | >Android启动后第一个被调用的函数 >常用来进行Activity的初始化(如创建view、绑定数据、恢复信息等) |
onStart() | 否 | >Activity显示在屏幕上时,该函数被调用 |
onRestart() | 否 | >Activity从停止状态进入活动状态前,调用该函数 |
onResume() | 否 | >当Activity可以接受用户输入时,该函数被调用 >此时的Activity处于Activity栈顶 |
onPause() | 否 | >Activity进入暂停状态时,该函数被调用 >主要用来保持持久数据、关闭动画、释放CPU资源等 >该函数必须简短,因为另一个Activity必须等待该函数执行完毕后才能显示在界面上 |
onStop() | 是 | >当Activity不对用户可见后,该函数被调用,Activity进入停止状态 |
onDestroy() | 是 | >Activity被终止(进入非活动状态)前,该函数被调用 >程序主动调用finish()函数或程序被Android系统终结 |
2.Activity状态保存/恢复的事件回调函数
函数 | 说明 |
---|---|
onSaveInstanceState() | 暂停或停止Activity前调用该函数,用以保存Activity的临时信息 |
onRestoreInstanceState() | 恢复onSaveInstanceState()保存的Activity状态信息 |
onSaveInstanceState() 和 onRestoreInstanceState() 函数不属于生命周期的事件回调函数,onSaveInstanceState() 在Activity 被暂时停止时(或被其他程序中断或者锁屏)被调用,而Activity被完全关闭时(调用 finish() 函数)则不会被调用。当暂停的Activity被恢复时,系统调用 onRestoreInstanceState() 函数。
onSaveInstanceState() 函数会将界面临时信息保存在Bundle中,onCreate() 函数和onRestoreInstanceState() 函数都可以恢复这些保存的信息。一般简化的做法是在 onCreate() 函数中恢复保存数据,但有些特殊情况还是需要使用 onRestoreInstanceState() 函数恢复保存信息。如必须在界面完全初始化完毕后才能进行的操作,或有子类来确定是否采用默认设置等。(存疑)