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() 函数恢复保存信息。如必须在界面完全初始化完毕后才能进行的操作,或有子类来确定是否采用默认设置等。(存疑)