Activity的生命周期

Activity的生命周期

Activity 有三个状态:

  当它在屏幕前台时,响应用户操作的Activity, 它是激活或运行状态.

  当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如右图), 它处于暂停状态.

  当它完全被另一个Activity覆盖时则处于停止状态.


 

  * 开启:onCreate()-->onStart()-->onResume()

  * 关闭:onPause()-->onStop()-->onDestroy()

  * 最小化:onPause()-->onStop()

  * 最大化:onRestart()-->onStart()-->onResume()

Activity的生命周期


BACK键

   按Back键时,应用程序将结束,将先后调用onPause()->onStop()->onDestory()三个方法。
   再次启动App时,会执行onCreate()->onStart()->onResume()


HOME键

   当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法

   注意:当Activity在后台时候,如果系统内存不够用,后台的Activity很有可能会被强制销毁回收内存的,那么一定会触发onSaveInstanceState(Bundle outState) 方法,我们可以把想保存的数据保存在 outState对象里,等Activity被重新创建执行onCreate(Bundle saveInstanceState) 从参数saveInstanceState再读取保存的数据


  • 锁屏:onPause()->onStop()
  • 解锁:onStart()->onResume()


ActivityA 打开 ActivityB

  • A:onPause()
  • B:onCreate()
  • B:onStart()
  • B:onResume()
  • A:onStop()
  • 但是,如果ActivityB的样式是Dialog样式,B没有完全遮挡A,ActivityB的生命周期跟刚才一样,但是ActivityA并没有执行onStop()

 

ActivityB 返回 ActivityA

依次会执行:

  • B:onPause()
  • A:onRestart()
  • A:onStart()
  • A:onResume()
  • B:onStop()
  • B:onDestory()

横竖屏切换activity的生命周期

  * 先销毁activity,然后在重新创建一个新的activity页面

  * 固定activity的屏幕朝向 screenOrientation

  * landscape :横屏

  * portrait :竖屏,默认方向

  * sensor :自适应

  * 使activity不敏感屏幕朝向的变化

       android:configChanges="orientation|keyboard|screenSize"