Activity : A,B,C,D。
回退栈: s1,s2.
正常的生命周期:
开始-退出 : onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy
启动Activity时,都会将Activity压入当前Application的回退栈中。
四种启动模式:standard,singleTop,singleTask,singleInstance。
standard模式
launchMode属性的默认值,每次通过startActivity调用该Activity时都会new一个新对象。例如A1->A2.
生命周期(点击时): A1 onPause -> A2 onCreate -> A2 onStart -> A2 onResume -> A1 onSaveInstanceState -> A1 onStop.
singleTop模式
如果当前Activity在回退栈的栈顶,则直接使用该Activity,同时调用该Activity的onNewIntent方法。
生命周期(点击时):A1 onPause -> A1 onNewIntent -> A1 onResume.
如果不在栈顶,则与standard模式相同。
singleTask模式
保证同一个窗口类在多个回退栈中只能有一个实例。
调用同一应用程序内的Activity:
如果Activity在栈顶,则直接使用并调用onNewIntent方法。
如果Activity不在栈顶,则将该Activity之上的Activity全部出栈,并调用onNewIntent方法。
生命周期(点击时):A1 onPause -> A1 onNewIntent -> A1 onResume.
调用不同应用程序内的Activity:
同上,但是此时涉及到其他应用程序的切换,而不是单纯的出入栈操作。
singleInstance模式
同singleTask模式,但是新建立的任务只能有一个Activity对象。不能在该任务栈中启动其他Activity。
生命周期(点击时):A1 onPause -> A1 onNewIntent -> A1 onResume.