在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