Activity 的 launchMode

Activity 的 launchMode

Activity 的启动模式,直接操作 Activity 在栈中的情况

配置方式
<activity
android:name="com.xykj.apidemo.Activity01"
...
android:launchMode="singleTop" />
查看 Activity 栈的情况: adb shell dumpsys activity > D:/log1805281648.txt
搜索 Running activities 找打自己的应用包名

standar :

默认,可以在栈中创建多个 Activity ,每启动一个 Activity 都会在栈中创建一个 Activity 对象

singleTop :

如果当前 Activity 已经在栈顶,则不再创建 Activity 对象而是直接触发其 onNewIntent 方法

singleTask :

配置该启动模式的 Activity 一般要配合 android:taskAffinity 属性来使用,并且 taskAffinity 要跟应用包名不一样 ( 如: com.test) ,这样该 Activity 将会
放到新栈 ( 如名字 com.test) 的栈底,然后该 Activity 启动其他普通的 Activity 的话那么其他的也会被放到该新栈中

<activity
android:name="com.xykj.apidemo.Activity02"
android:label="Activity02"
android:taskAffinity="com.test"
android:launchMode="singleTask" />

singleInstance :

跟 singleTask 类似,唯一的区别是添加来该启动模式的 Activity 会被放在新栈中,并且新栈中有且只有该 Activity 一个对象

猜你喜欢

转载自blog.csdn.net/AHAI1078766113/article/details/81700040