Activity的生命周期包括:
onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestory()
调用的流程 :
各个方法的含义:
onCreate():应用程序第一次启动的时候,会调用这个方法。
onStart():是在应用程序变得的可见之前,这个方法会被调用,在这个方法中可以进行一些数据的加载,做一些准备工作
onRestart():如果应用程序调用了onStop()方法,那么这个应用再次启动的时候,就会调用这个方法。
onResume():在应用和用户进行交互之前,会调用这个方法,这时,这个Activity处于activity栈的最顶端,
onPause():当系统准备启动另外一个Activity时,会调用这个方法,通常需要在这个方法中进行数据、状态的保存工作
onStop():当前的Activity不可见时,会调用这个方法,
onDestory():Activity的最后一个方法,Activity消亡
完整的Activity的各个生命周期的调用顺序:
onCreate()->onStart()->onResume()
可见->按Back健->启动:
onPause()->onStop()->onDestory()->onCreate()->onStart()->onResume()
可见->按Home键->启动:
onPause()->onStop()->onRestart()->onStart()->onResume()
可见->按Home键->长按Home键启动(从recent列表启动):
onPause()->onStop()->onRestart()->onStart()->onResume()
可见->按电源键锁屏->按电源键解锁:
onPause()->onStop()->onRestart()->onStart()->onResume()
可见->旋转屏幕
onPause()->onStop()->onDestory()->onCreate()->onStart()->onResume()
旋转屏幕时,如果不做任何的处理,Activity会进行重建
Activity数据的保存:
虽然Activity不可见了,但是这个Activity的状态并没有被销毁,Activity的状态,还可以恢复过来,可以通过方法onSaveInstanceState()来保存一些重要的数据和状态,可以通过一些键值对来保存重要的数据,保存在Bundle中,可以通过onCreate()方法,或者onRestoreInstanceState()方法,来恢复之前的数据和状态
大致的流程如图:
注意:因为onSaveInstanceState()并不能保证,一定会被调用,因为有些情况,不需要保存数据和状态(如用户显示的关闭这个Activity时,用户通过Back键离开时),所以,不能通过onSaveInstanceState()方法来保存一些重要的持久化的数据,可以在onSaveInstaceState()方法中保存一些UI的状态,需要在onPause()方法中保存重要的持久化的数据