Activity launchMode基础

2020-06-16  本文已影响0人  霍霍9527

打印acitivity任务栈信息:adb shell dumpsys activity activities
打印正在运行的信息:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'

singleTask 不指定android:taskAffinity不会产生新的任务栈,并且被再次调用的时候回清除其上面的activity


singleTask 界面A-B-A-B后的任务栈情况

singleInstance模式会产生一个新的栈并且Activity只有他自己,在它上面打开新的界面,会调起原来的任务栈打开新界面,并且原来的task后返回的话也要等待原来的都返回才能在回到singleInstance的Activity。


singleInstance模式原任务栈
singleInstance模式自己任务栈

1.Intent.FLAG_ACTIVITY_CLEAR_TASK 要配合Intent.FLAG_ACTIVITY_NEW_TASK使用 清除栈放自己

val intent = Intent(applicationContext, ModeStandardActivity::class.java)
            intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
            startActivity(intent)

2.Intent.FLAG_ACTIVITY_CLEAR_TOP 清除其顶层的activity

3.android:taskAffinity="com.huo.taskSelf" 指定任务栈名字,置默认是包名
格式是xxx.xxx.xxx 直接写xxx会报错
The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
可以设置在清单文件application 和 activity标签,application控制所有的activity,activity控制自己,如果不设置默认是包名。
android:taskAffinity="com.huo.taskSelf" 可以用来生成新的任务栈
效果:在历史活动中会有两个活动一个是默认的,一个是指定名字的taskAffinity
android:taskAffinity="com.huo.taskSelf" 生成新的任务栈,并且历史活动会看到两个activity

必要条件缺一不可:
 <intent-filter>
                <action android:name="com.huo.task.activity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
WechatIMG12.jpeg
WechatIMG13.jpeg
上一篇下一篇

猜你喜欢

热点阅读