四大组件_Activity_LaunchMode和Flag

一,1> Activity 的 LaunchMode。

设置启动模式的位置在 AndroidManifest.xml 文件中 Activity 元素的 android:launchMode 属性。

(1)standard:标准模式

系统默认,每次激活Activity时都会创建Activity实例,并放入任务栈中。

(2)singleTop:栈顶复用模式


四大组件_Activity_LaunchMode和Flag_第1张图片
singleTop

(3)singleTask:栈内复用模式


四大组件_Activity_LaunchMode和Flag_第2张图片

(4)singleInstance: 单例模式


四大组件_Activity_LaunchMode和Flag_第3张图片

2> TaskAffinity 任务相关性:

(1) 这个参数标识了一个 Activity 所需要的任务栈的名字,默认情况下,所有 Activity 所需的任务栈的名字为应用的包名。我们也可以为每个 Activity 指定 taskAffinity 属性,这个属性值必须不能喝包名相同,否则就相当于没有指定。

(2) TaskAffinity 属性主要是和 singleTask 启动模式或者allowTaskReparenting属性配对使用,在其他情况下没有意义。

1,当 TaskAffinity 和 singleTask 启动模式配对使用时候,它是具有该模式的 Activity 的目前任务栈的名字,待启动的 Activity 会运行在名字和 TaskAffinity 相同的任务栈中。

2,当TaskAffinity和allowTaskReparenting结合使用时,allowTaskReparenting的主要作用是activity的迁移,即从一个task迁移到另一个task,这个迁移跟activity的taskAffinity有关,必须是从一个跟该activity taskAffinity不同的task中迁移到跟它taskAffinity相同的task中。

实际使用案例:如何优雅地从浏览器打开本地应用


二、Activity 的 Flag

常用标记位有以下几种:


四大组件_Activity_LaunchMode和Flag_第4张图片

如何给 Activity 指定启动模式:


四大组件_Activity_LaunchMode和Flag_第5张图片

你可能感兴趣的:(四大组件_Activity_LaunchMode和Flag)