##Android Activity的生命周期
下面这张图非常清晰地介绍了Activity的生命周期:
##当通过intent跳转时的状态变化 一个Activity的状态有三个:Stopped(存在但看不见),Paused(部分可见,但无焦点),Resumed(激活状态,拥有焦点,可以与之交互)。如果将不存在也算作一个状态,那样一共就有四个状态。
这篇文章非常详细地讨论了当通过intent在一个Activity中启动另一个Activity时,它们两个Activity的状态变化过程。
当由MainActivity跳转到ActivityTwo时,下面是方法的调用顺序:
MainActivity: onPause()
ActivityTwo: onCreate()
ActivityTwo: onStart()
ActivityTwo: onResume()
MainActivity: onStop()
步骤为:MainActivity失去焦点,转到Paused状态->ActivityTwo新建但不可见,处于Stopped状态->ActivityTwo可见,处于Paused状态->ActivityTwo获得焦点,处于Resumed状态->MainActivity不可见,处于Stopped状态。
值得注意的是,当ActivityTwo位于前台时,MainActivity并没有被销毁,而是仍保存在内存中。
按下后退键,由ActivityTwo返回MainActivity时,方法的调用顺序为:
ActivityTwo: onPause()
MainActivity: onRestart()
MainActivity: onStart()
MainActivity: onResume()
ActivityTwo: onStop()
ActivityTwo: onDestroy()
步骤与上一步类似。值得注意之处有二:
- 其一,MainActivity.onRestart方法先于MainActivity.onStart方法调用。如果Activity不是从无到有新建出来的,那么在onStart方法前都会先调用onRestart方法。
- 其二,ActivityTwo被销毁了。至于为什么此时ActivityTwo会被销毁,涉及到Task的原理。在这篇文章中有介绍。