- Standard 标准启动模式(默认启动模式)
- SingleTop启动模式:如果在堆栈的最上层已经有这个Activity,那么直接重用堆栈上面的那个Activity
- SingleTask启动模式:如果堆栈中已经这个Activity,那么在此启动Activity的时候会将这个Activity在堆栈上面的其它Activity 清除掉,然后显示
- SingleInstance启动模式:启动这个模式的Activity会重新新建一个堆栈,每次启动Activity的时候就会调用这个堆栈里面的Activity
taskAffinity
- taskAffinity需要和SingleTask配合使用,和其它的启动模式配合在一起有用,并且taskAffinity的值里面需要有.否则安装App不成功
从这两幅图中可以看出,最开始的堆栈id是64,然后 当到了AActivity之后变为了65,之后BActivity和CActivity都变成了65,说明AActivity设置了TaskAffinity之后,接下来的Activity都放在了AActivity放的堆栈中了。
当最后跳转到AActivity的时候调用了onNewIntent()
Intent的flag
当在Service和Application启动Activity的时候需要设置FLAG_NEW_TASK这样才能够启动成功,因为Service和Application所在的Context没有在一个堆栈中