我有一个应用程序在后台运行服务(音频播放器),并在运行时显示正在进行的通知。当用户点击通知时,我想打开播放器活动而不显示在最近的列表中,而不将应用程序的其余部分放在前面,所以当用户按下后退按钮时,他们会直接进入他们以前使用的应用程序,无论如何。我尝试了三种不同的方法,但没有一种能很好地运作。
FLAG_ACTIVITY_NEW_TASK
启动意图。如果存在任务,则将其带到前面。当用户按下后退按钮时,玩家活动结束并显示所述任务中的先前活动,而不是在点击通知时返回到前景中的应用程序。FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
。现有任务未被带到前面,后退按钮按预期工作。但是,在此活动完成后,应用程序将完全从最新列表中消失。恢复它的唯一方法是从启动器图标启动它,它将现有任务带到前台,就像从最近打开一样。FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NO_HISTORY
。活动在新任务中开始,但所述任务将替换最近列表中的主要任务。添加FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
使其行为与以前的情况完全相同。有没有正确的方法来进行这样的导航,或者我是否应该放弃尝试并让它将整个现有任务带到前面,并在其上启动玩家活动,如案例1中所示?
答案 0 :(得分:0)
你是否方便将launchMode声明为" singleInstance"在清单文件中的此活动标记内?我想这可能对你有所帮助。但我不确定。我可以试试
答案 1 :(得分:0)
也许您可以尝试将launchmode作为清单中notificationActivity的标记;
android:launchMode="singleInstance"
答案 2 :(得分:0)
你应该尝试新的以文档为中心的API:
答案 3 :(得分:0)
我实际上找到了正确的方法:将taskAffinity
属性添加到清单中的<activity>
。通过这种方式,它不会干扰应用程序的其余部分如何显示,这正是我想要实现的目标。