我有一个有时会向用户显示通知的应用程序。当按下通知时,将触发“派遣”活动,该活动会根据通知有效负载以某些意图调用startActivities
,从而导致适当的活动。这是根据https://developer.android.com/training/notify-user/navigation#ExtendedNotification]在清单中声明的方式
android:name=".DispatchActivity" android:taskAffinity="" android:excludeFromRecents="true" android:launchMode="singleTask" />
[当我按下通知时,在立即调用finish()之前,将使用
DispatchActivity
启动Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
并使用Intent.FLAG_ACTIVITY_NEW_TASK
启动新的活动。如果我的应用程序已经启动,则新活动(简称为second Activity
)将在先前已启动的活动之上启动,因此当您按“最近”按钮时,您只能看到我的应用一次。
这实际上是我想要的行为。问题是,当我在Android 10上运行相同的代码并按“最近”按钮时,我可以看到我的应用程序的两个实例(我猜是两个任务):
如果我再次按最近按钮以恢复第二个活动,它就消失了,而我只有最初的活动。仿佛SecondActivity从excludeFromRecents
行为继承而来,而在其他Android版本上则不是(我什至在Android 11预览版上进行了测试,并且按预期运行)。
我尝试在清单中将taskAffinity=""
的DispatchActivity
删除,因此它与应用程序中的其他活动具有相同的亲和力,但是当我收到未启动的应用程序的通知时,从DispatchActivity启动的活动会像最初那样消失时,我会遇到问题在Android 10上,因为excludeFromRecents
标签。
我现在想法不清了,因此,如果您有任何解决方案,或者可能已经遇到问题,欢迎您提出建议。
谢谢!
这里是示例代码,如果需要:https://github.com/LoicJ/MultiTaskBugSample.git
我有一个有时会向用户显示通知的应用程序。当按下通知时,将触发“派遣”活动,该活动以某些意图调用startActivities导致...