Android 如何以与启动器相同的方式启动活动?
我有一个Android 如何以与启动器相同的方式启动活动?,android,android-intent,Android,Android Intent,我有一个ActivityA,在android清单中声明为singleTop和android.intent.action.MAIN。我从启动器启动它,然后通过Intent启动另一个活动B,然后按Home按钮。现在我有一个任务,活动堆栈“a,B”在后台等待。如果我随后再次从启动器启动activityA,我将返回已经运行的实例,并恢复堆栈(activityB在前台运行) 这很好。我希望在从我自己的通知启动活动A时达到同样的效果。我尝试了不同的Intent标志组合,但我得到了活动a的新实例,或者相同的实
Activity
A,在android清单中声明为singleTop
和android.intent.action.MAIN
。我从启动器启动它,然后通过Intent
启动另一个活动B,然后按Home按钮。现在我有一个任务,活动堆栈“a,B”在后台等待。如果我随后再次从启动器启动activityA,我将返回已经运行的实例,并恢复堆栈(activityB在前台运行)
这很好。我希望在从我自己的
通知
启动活动A时达到同样的效果。我尝试了不同的Intent
标志组合,但我得到了活动a的新实例,或者相同的实例,但堆栈已清除(前景中没有活动B。首先,让我们确保当您长时间不使用活动B时,系统不会终止该任务
如果用户长时间离开任务,系统将清除除根活动之外的所有活动的任务。当用户再次返回任务时,仅恢复根活动。系统的行为是这样的,因为经过一段时间的延长,用户很可能已经放弃了他们以前所做的事情,并且正在返回任务开始新的工作
有一些活动属性可用于修改此行为:
AlwaysRetaintasksState
:如果在任务的根活动中将此属性设置为“true”,则不会发生刚才描述的默认行为。即使经过很长一段时间,任务仍会保留其堆栈中的所有活动。因此,您需要做的是在Android文档中的下将其设置为true。我想这就是你想要的。如果启动了指定singleTask
启动模式的活动,则如果该活动的实例存在于后台任务中,则整个任务将被带到前台。此时,后堆栈现在在堆栈顶部包含来自前向任务的所有活动
因此,您还需要在A和B标记下添加singleTask
,而不是singleTop
。然后,您需要从通知启动活动A,不带任何标志,但标志活动\u新任务
和标志活动\u重新排序\u到\u前端
(可选)
我自己也没有试过,但我坚信它会奏效。试试看,如果不行就告诉我