Demo中有MainActivity、Main2Activity、Main3Activity、Main4Activity四个Activity,主要是通过改变Main2Activity的启动模来观察不同模式下,Activity各个生命周期的运行流程
一、Standard
standard( 标准模式 ):每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在,并且它会进入启动者所在的栈中。MainActivity启动
MainActivity::onCreate::TaskId::1358
MainActivity::onContentChanged::TaskId::1358
MainActivity::onStart::TaskId::1358
MainActivity::onPostCreate::TaskId::1358
MainActivity::onResume::TaskId::1358
MainActivity::onPostResume::TaskId::1358
MainActivity::onAttachedToWindow::TaskId::1358
MainActivity::onCreateOptionsMenu::TaskId::1358
MainActivity::onPrepareOptionsMenu::TaskId::1358
MainActivity启动Main2Activity
MainActivity::onUserInteraction::TaskId::1358
MainActivity::onUserInteraction::TaskId::1358
MainActivity::onPause::TaskId::1358
Main2Activity::onCreate
Main2Activity::onStart
Main2Activity::onPostCreate
Main2Activity::onResume
Main2Activity::onPostResume
Main2Activity::onAttachedToWindow
MainActivity::onStop::TaskId::1358
MainActivity::onSaveInstanceState::TaskId::1358
Main2Activity点击返回键
Main2Activity::onPause
MainActivity::onRestart::TaskId::194
MainActivity::onStart::TaskId::194
MainActivity::onResume::TaskId::194
MainActivity::onPostResume::TaskId::194
Main2Activity::onStop
Main2Activity::onDestroy
Main2Activity::onDetachedFromWindow
二、SingleTop
singleTop(栈顶复用模式): 如果新的Activity已经位于所在任务栈的顶部,则此Activity不会被重新创建 ,若已存在但不在栈顶,则仍然会重新创建;MainActivity启动
与standard相同MainActivity启动Main2Activity
与standard相同Main2Activity启动Main2Activity
Main2Activity::onPause
//只要不创建新的实例,就会调用onNewIntent方法
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume
三、singleTask
singleTask(栈内复用模式): 只要Activity在一个栈已经存在,那么多次启动此Activity都不会重新创建实例。MainActivity启动
与standard相同MainActivity启动Main2Activity
与standard相同Main2Activity启动Main3Activity
Main2Activity::onPause
Main3Activity::onCreate
Main3Activity::onStart
Main3Activity::onPostCreate
Main3Activity::onResume
Main3Activity::onPostResume
Main3Activity::onAttachedToWindow
Main2Activity::onStop
Main2Activity::onSaveInstanceState
Main3Activity启动Main4Activity
Main3Activity::onUserInteraction
Main3Activity::onUserInteraction
Main3Activity::onPause
Main4Activity::onCreate
Main4Activity::onStart
Main4Activity::onPostCreate
Main4Activity::onResume
Main4Activity::onPostResume
Main4Activity::onAttachedToWindow
Main3Activity::onStop
Main3Activity::onSaveInstanceState
Main4Activity启动Main2Activity
Main4Activity::onUserInteraction
Main3Activity::onDestroy
Main3Activity::onDetachedFromWindow
Main4Activity::onPause
Main2Activity::onRestart
Main2Activity::onStart
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume
Main4Activity::onStop
Main4Activity::onDestroy
Main4Activity::onDetachedFromWindow
四、singleInstance
singleInstance(单实例模式): 这是一种加强的singleTask模式,当该Activity启动后,系统会为该Acitivty创建一个新的栈,然后改Acitivty会独立地在这个栈内,但由于栈内复用特性,后续的请求均不会创建新的栈,除非这个独立的栈被系统销毁。MainActivity启动
与standard相同MainActivity启动Main2Activity
与standard相同Main2Activity启动Main3Activity
Main2Activity::onPause
Main3Activity::onCreate
Main3Activity::onStart
Main3Activity::onPostCreate
Main3Activity::onResume
Main3Activity::onPostResume
Main3Activity::onAttachedToWindow
Main2Activity::onStop
Main2Activity::onSaveInstanceState
Main3Activity启动Main4Activity
Main3Activity::onUserInteraction
Main3Activity::onUserInteraction
Main3Activity::onPause
Main4Activity::onCreate
Main4Activity::onStart
Main4Activity::onPostCreate
Main4Activity::onResume
Main4Activity::onPostResume
Main4Activity::onAttachedToWindow
Main3Activity::onStop
Main3Activity::onSaveInstanceState
Main4Activity开启Main2Activity
Main4Activity::onUserInteraction
Main3Activity::onDestroy
Main3Activity::onDetachedFromWindow
Main4Activity::onPause
Main2Activity::onRestart
Main2Activity::onStart
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume
Main4Activity::onStop
Main4Activity::onDestroy
Main4Activity::onDetachedFromWindow
注意事项
onNewIntent:Activity没有创建新的实例的时候使用
onSaveInstanceState:开启新的Activity时会被调用;发生异常时会被调用;切换到后台时会被调用;屏幕旋转的时候会被调用;
旋转屏幕时生命周期的方法
MainActivity::onPause
MainActivity::onStop
MainActivity::onSaveInstanceState
MainActivity::onDestroy
MainActivity::onDetachedFromWindow
MainActivity::onCreate
MainActivity::onContentChanged
MainActivity::onStart
MainActivity::onRestoreInstanceState
MainActivity::onPostCreate
MainActivity::onResume
MainActivity::onPostResume
MainActivity::onAttachedToWindow
MainActivity::onCreateOptionsMenu
MainActivity::onPrepareOptionsMenu