四种状态:
正常情况下:依次会走Activity启动--onCreate()--onStart()--onResume()--Activity此时呈现在用户面前--当停掉Activity时会执行onPuse()--Activity不可见时执行onStop()--Activity被销毁时---onDestory()
Activity暂停之后, 用户又返回到Activity时:依次会执行onResume()--Activity此时呈现在用户面前--当停掉Activity时会执行onPuse()--Activity不可见时执行onStop()--Activity被销毁时---onDestory()
Activity长时间不可见,用户又重新导航到Activity:依次会执行onRestart()--onStart()--onResume()--Activity此时呈现在用户面前--当停掉Activity时会执行onPuse()--Activity不可见时执行onStop()--Activity被销毁时---onDestory()
Activity被释放掉后又重新导航回来:依次会执行onCreate()--onStart()--onResume()--Activity此时呈现在用户面前--当停掉Activity时会执行onPuse()--Activity不可见时执行onStop()--Activity被销毁时---onDestory()
BACK键:
当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法。
再次启动App时,会执行onCreate()->onStart()->onResume()
HOME键:
按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。
而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法。
横竖屏切换时Activity的生命周期:
从竖屏--横屏:从当前界面依次会走onPuse()--onStop()--onDestory()--onCreate()--onStart()--onResume()。可以看出竖屏会销毁,横屏会重新创建。
onSaveInstanceState() 和 onRestoreInstanceState()
当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。
通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
onSaveInstanceState()
的调用将发生在onPause()或onStop()方法之前。(虽然测试时发现多数在onPause()前)
onRestoreInstanceState()
在 onStart() 和 onPostCreate(Bundle)之间调用。onPostCreate() 在 handleStartActivity() 时被调用