Activity的启动模式 有更新!

  益达MIM味

standard 标准模式

系统默认模式,每次启动一个activity都会创建一个新的实例压在栈顶,不管这个activity是否已经存在。

singleTop 栈顶单例

如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,所以它的启动三回调就不会执行,同时Activity的onNewIntent()方法会被回调.如果Activity已经存在但是不在栈顶,那么作用于_standard模式_一样.

singleTask 栈内单例

创建这样的Activity的时候,系统会先确认它所需任务栈已经创建,否则先创建任务栈.然后放入Activity,如果栈中已经有一个Activity实例,那么这个Activity就会被调到栈顶,调用onNewIntent(),并且singleTask会清理在当前Activity上面的所有Activity.(clear top)

singleInstance 全局单例

加强版的singleTask模式,这种模式的Activity只能单独位于一个任务栈内,由于栈内复用的特性,后续请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁了

Activity的堆栈管理以ActivityRecord为单位,所有的ActivityRecord都放在一个List里面.可以认为一个ActivityRecord就是一个Activity栈