您的位置:首页 > 其它

设置FLAG_ACTIVITY_NEW_TASK导致Activity打开两次

2016-05-17 23:55 295 查看
在Service中启动Activity需要进行如下设置:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
但是遇到过目标Activity会打开两次的问题,解决方案为:
在目标Activity的配置信息中设置
android:taskAffinity="aaa.aaa"android:allowTaskReparenting="true" 
"aaa.aaa"为包名,只要不跟项目包名一致就好。
原因:
如果目标Activity(C)在Manifest.xml中的声明中添加了Taskaffinity,并且和Service(B)所在栈的affinity不同,系统首先会查找有没有和C的栈 affinity相同的栈存在,如有存则将C压入那个栈,无则会新建一个属于C的affinity的栈将其压入。如果C的Task affinity默认没有设置,或者和B所在的栈的affinity相同,和不加FLAG_ACTIVITY_NEW_TASK标记效果是一样的参考知乎用户回答,源地址:http://www.zhihu.com/question/20113407
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: