Activity的生命周期

一:Activity生命周期的分析

  1. onCreate: 表示Activity正在被创建,在此方法中做一些初始化工作,如调用setContentView 去加载界面布局资源

  2. onRestart: 表示Activity正在重新启动。Activity从不可见状态变为可见状态时,该方法就会被回调。适用场景:用户点击home建之后,重新回到该页面。或者是启动新的Activity之后,在回到该页面。也可以是熄灭屏幕后重新点亮回到该页面。

  3. onStart:表示Activity正在启动,这时Activity还不可见

  4. onResume: 表示Activity已经可见了

  5. onPause: 表示Activity正在停止,这时候Activity还是可见的

  6. onStop:表示Activity即将停止,这时候Activity已经不可见了

  7. onDestory: 表示Activity即将被销毁,在该方法中可以做一些回收工作和资源的释放

Activity生命周期转换:


二:Activity生命周期的一些场景

  1. Activity启动一个新的生命周期:
MainActivity: --onCreate--
MainActivity: --onStart--
MainActivity: --onResume--
MainActivity: --onPause--
SecondActivity: --onCreate--
SecondActivity: --onStart--
SecondActivity: --onResume--
MainActivity: --onStop--
  1. SecondActivity点击back进行回退到MainActivity
SecondActivity: --onPause--
MainActivity: --onRestart--
MainActivity: --onStart--
MainActivity: --onResume--
SecondActivity: --onStop--
SecondActivity: --onDestroy--
  1. MainActivity熄灭屏幕在点亮屏幕
//熄灭
MainActivity: --onPause--
MainActivity: --onSaveInstanceState--
MainActivity: --onStop--
//点亮
MainActivity: --onRestart--
MainActivity: --onStart--
MainActivity: --onResume--
  1. MainActivity点击home,在返回来(点击桌面图标或者双击home键选择app)
MainActivity: --onPause--
MainActivity: --onSaveInstanceState--
MainActivity: --onStop--
//重新回到该Activity
MainActivity: --onRestart--
MainActivity: --onStart--
MainActivity: --onResume--

点击home键之后,App就切换到后台了,只要在后台不被系统杀死,Activity就不需要重建。

  1. Activity被系统回收之前进行状态的保存

A.当系统配置发生改变时,例如旋转手机屏幕,
b.当系统内存不足时,会杀死App所在的进程。

发生上面俩种情况时,Activity在被销毁之前,系统会回调Activity的onSaveInstanceState()方法。然后我们重新回到Activity时系统会主动回调onRestoreInstanceState()方法

旋转手机屏幕:

MainActivity: --onPause--
MainActivity: --onSaveInstanceState--
MainActivity: --onStop--
MainActivity: --onDestroy--
//Activity被销毁,需重建
MainActivity: --onCreate--
MainActivity: --onStart--
MainActivity: --onRestoreInstanceState--
MainActivity: --onResume--

推荐阅读更多精彩内容