一,1> Activity 的 LaunchMode。
设置启动模式的位置在 AndroidManifest.xml 文件中 Activity 元素的 android:launchMode 属性。
(1)standard:标准模式
系统默认,每次激活Activity时都会创建Activity实例,并放入任务栈中。
(2)singleTop:栈顶复用模式
singleTop(3)singleTask:栈内复用模式
(4)singleInstance: 单例模式
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 指定启动模式:
网友评论