为了账号安全,请及时绑定邮箱和手机立即绑定

launchMode,taskAffinity和近期任务列表关系

标签:
Android

本文总结了android:launchMode、Intent.FLAG_ACTIVITY_NEW_TASK、android:taskAffinity和近期任务列表RecentsActivity关系

实验辅助工具:通过adb shell dumpsys activity 命令观察 activity所属task栈的id(在输出中搜索Running activities,带#号的就是该activity所属task栈的id)

手机版本:官方模拟器api25

现有MainActivity,和将要跳转的Main2Activity

MainActivity manifest中属性如下

 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
1.android:launchMode="standard" 和android:launchMode="singleTop"结论

当启动Main2Activity 的intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)时,MainActivity和Main2Activity的taskId是一样的。

当启动 Main2Activity 的 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) && android:taskAffinity=“不同于当前包名的包名”时,MainActivity和Main2Activity的taskId不一致且近期任务列表RecentsActivity中存在2个任务选项卡。

2.android:launchMode="singleTask"结论

当启动Main2Activity 的intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)时,MainActivity和Main2Activity的taskId是一样的。

当 Main2Activity 的 android:taskAffinity=“不同于当前包名的包名”时,MainActivity和Main2Activity的taskId不一致且近期任务列表RecentsActivity中存在2个任务选项卡。

3.android:launchMode="singleInstance"结论

因为是Main2Activity 的android:launchMode="singleInstance",独享一个taskId,讨论Intent.FLAG_ACTIVITY_NEW_TASK就没有意义,肯定MainActivity和Main2Activity是不一样的

当 Main2Activity 的 android:taskAffinity=“不同于当前包名的包名”时,MainActivity和Main2Activity的taskId不一致且近期任务列表RecentsActivity中存在2个任务选项卡。

4.为什么要搞出2个任务选项卡

有时候我们需要在近期任务列表RecentsActivity中存在多个任务卡,比如一个任务卡看消息,一个任务卡写作,对用户比较友好,用户很方便切换。

如果想搞出2个任务选项卡,必须要加的条件就是android:taskAffinity=“不同于当前包名的包名”,至于生不生效就看该Main2Activity的启动模式了,如果是android:launchMode="singleTask"和android:launchMode="singleInstance"加上android:taskAffinity=“不同于当前包名的包名”就直接生效,如果是android:launchMode="standard" 和android:launchMode="singleTop"除了得加上android:taskAffinity=“不同于当前包名的包名”以外还有加上Intent.FLAG_ACTIVITY_NEW_TASK。

点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
1万
获赞与收藏
137

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消