首先,让我们确保当您长时间不使用该任务时系统不会杀死您的Activity B。
如果用户长时间离开一个任务,系统会清除该任务除根Activity之外的所有Activity。当用户再次返回任务时,仅恢复根活动。系统的行为方式是这样的,因为在很长一段时间后,用户可能已经放弃了他们之前所做的事情并返回到任务中开始新的事情。
您可以使用一些活动属性来修改此行为:
alwaysRetainTaskState
:如果在任务的根活动中将此属性设置为“true”,则不会发生刚刚描述的默认行为。即使经过很长时间,该任务也会将所有活动保留在其堆栈中。因此,您需要做的是<activity>
在您的清单文件中的标记下将其设置为 true A.
其次,你不需要singleTop
. 从 Android 文档检查这个数字。我想这就是你想要的。如果您启动一个指定singleTask
启动模式的活动,那么如果该活动的一个实例存在于后台任务中,则整个任务将被带到前台。此时,后退堆栈现在包括来自堆栈顶部的任务中的所有活动。
所以你还需要singleTask
在 A 和 B 的标签下添加,而不是singleTop
. 然后,您需要从 Notification 启动活动 A,不带任何标志,但FLAG_ACTIVITY_NEW_TASK
和FLAG_ACTIVITY_REORDER_TO_FRONT
(可选)。
我自己没有尝试过,但我坚信它会起作用。试试看,如果没有,请告诉我。