首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓10上的taskAffinity和excludeFromRecents问题

安卓10上的taskAffinity和excludeFromRecents问题
EN

Stack Overflow用户
提问于 2020-03-28 01:08:20
回答 1查看 608关注 0票数 1

我有一个应用程序,它有时会向用户显示通知。当按下通知时,将触发"Dispatch“活动,该活动将调用startActivities,并根据通知有效负载导致适当的活动。下面是如何根据https://developer.android.com/training/notify-user/navigation#ExtendedNotification在清单中声明它的

代码语言:javascript
复制
            android:name=".DispatchActivity"
            android:taskAffinity=""
            android:excludeFromRecents="true"
            android:launchMode="singleTask" />

当我按下通知时,DispatchActivity使用Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK启动,并使用Intent.FLAG_ACTIVITY_NEW_TASK启动一个新活动,然后立即调用finish()。如果我的应用程序已经启动,新的活动(让我们称其为second Activity)将在之前已经启动的活动之上启动,因此当您按下Recents按钮时,您只能看到我的应用程序一次。

这实际上是我想要的行为。问题是,当我在Android 10上运行相同的代码并按下Recents按钮时,我可以看到我的应用程序的两个实例(我猜是两个任务):

如果我再次按下最近的按钮来恢复第二个活动,它就会消失,我只有最初的活动。似乎SecondActivity继承了excludeFromRecents behaviour,而在其他安卓版本上不是这样(我甚至在Android11预览版上测试过,它可以像预期的那样工作)。

我尝试在清单中删除DispatchActivitytaskAffinity="",以便它与应用程序中的其他活动具有相同的亲和力,但当收到应用程序未启动时的通知时,我会遇到问题,因为excludeFromRecents标签,从DispatchActivity启动的活动会像最初在Android10上一样消失。

我现在没有主意了,所以如果你有任何解决方案,或者可能已经遇到了这个问题,我欢迎你的建议。

谢谢!

如果需要,下面是示例代码:https://github.com/LoicJ/MultiTaskBugSample.git

EN

回答 1

Stack Overflow用户

发布于 2020-05-30 15:02:59

答案是android:noHistory="true"将此行添加到清单文件中的活动中,它将提供您预期的行为。

您的最终代码可能如下所示:

代码语言:javascript
复制
<activity
        android:name=".DispatchActivity"
        android:excludeFromRecents="true"
        android:launchMode="singleTask"
        android:noHistory="true"
        android:taskAffinity="" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60890814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档