关于Activity启动模式的总结

1、Standard

Standard模式没什么好说的,每次启动都会在当前Activity所在task内新建一个新的Activity实例,特殊情况是当前Activity的启动模式为SingleInstance,具体见下文。

启动一个Standard Activity
关于Activity启动模式的总结_第1张图片
启动两个Standard Activity

2、SingleInstance

SingleInstance模式下,不但Activity是单例的,连他所处的task也是单独的,即它独占一个task,如果在该Activity未销毁时二次启动该Activity也只是重新调用该Activity,只会回调onNewIntent方法,而不会回调onCreate方法

PS:如果这时候从SingleInstance Activity再启动一个Standard Activity,该Activity也是隶属于默认的task(如下图的task 7424),而不是SingleInstance Activity所属的task(如下图的task 7425)

关于Activity启动模式的总结_第2张图片
启动SIngleInstance Activity

3、SingleTop

该模式区别于Standard模式的仅仅在于当SingleTop Activity位于Task顶部时,再次启动不会重新创建,而只是回调顶部SingleTop Activity的 onNewIntent 方法,而如果SingleTop Activity不在task顶部,它的行为模式则等同于Standard

4、SingleTask

该模式根据manifest内是否设置了taskAffinity属性而有所区别,如果设置了该属性,则SingleTask Activity会在一个新的task内启动,而如果未设置,则会在默认task内启动

如果尝试重新启动一个已存在的SingleTask Activity,它会将它所在task上方的所有activity都清除,且仅回调onNewIntent 方法。

关于Activity启动模式的总结_第3张图片
SingleTask Activity的manifest配置
关于Activity启动模式的总结_第4张图片
设置了taskAffinity后的SingleTask Activity
关于Activity启动模式的总结_第5张图片
未设置taskAffinity的SingleTask Activity

你可能感兴趣的:(关于Activity启动模式的总结)