Android12 新的启动模式launchMode="singleInstancePerTask"

Android12 新的启动模式launchMode="singleInstancePerTask"

新的启动模式singleInstancePerTask

Android 大家熟知的启动模式

standard 标准模式

我们每次新建Activity的时候,默认就是standard 标准模式,不管返回栈中有没有都会新建一个Activity放在栈顶, 即使栈顶存在也会新建。

singleTop 单个栈顶模式

如果返回栈的栈顶存在,则不新建,直接显示给用户,如果栈顶不存在就新建并放在栈顶,可以理解为只看栈顶

singleTask 单栈单例模式

如果当前返回栈中存在,不管是在栈的什么位置,都不会新建,会把它上面的全部出栈,它直接显示在栈顶

singleInstance 独栈单例模式

为什么是独栈呢?,因为如果启动模式是singleInstance 的话,Android会为当前Activity 新建一个单独的栈,方便被其他应用来调用,当前任务栈中仅有这一个Activity

思考:存在跳转逻辑:ActivityA(standard ) 跳转到 ActivityB(singleInstance ) 跳转到 ActivityC(standard ),按Back键,页面的显示逻辑是怎样的呢?

Android 12 新增的启动模式singleInstancePerTask

singleInstancePerTask 每个任务的单例模式

Android12新增的对于singleInstancePerTask描述如下:

   `
            
 
          百度翻译:
                  该活动只能作为任务的根活动(创建任务的第一个活动)运行,
                  因此任务中只能有一个此活动的实例。与{@code singleTask}启动模式不同,
                  如果设置了{@ccode FLAG_activity_MUNIPLE_TASK}或{@codeFLAG_ACTIVETY_NEW_DOCUMENT},
                  则可以在不同任务的多个实例中启动此活动

默认作用和singleTask相似,不同的在于singleInstancePerTask不需要设置一个不同的taskAffinity即可创建新的Task。
另外结合Intent.FLAG_ACTIVITY_MULTIPLE_TASK和Intent.FLAG_ACTIVITY_NEW_DOCUMENT,每次启动了launchMode设置为“singleInstancePerTask”的Activity都可以创建一个新的Task,那么这个新启动的Activity自然就是这个新创建的Task的root Activity。singleInstancePerTask是singleTask的扩展,这个Activity可以有多个实例,但是每个都是所在的Task的root Activity。

你可能感兴趣的:(Android12 新的启动模式launchMode="singleInstancePerTask")