活动A是我的应用程序的主页。
A -> B -> C
C使用FLAG_ACTIVITY_CLEAR_TOP启动A以正确获取主页A.这很好用,堆栈就变成了,
A
但是可以使用Notification Manager直接调用B.
B -> C -> A
所以,即使我在C中启动A时使用FLAG_ACTIVITY_CLEAR_TOP标志,B和C仍然存在于A(主页)之前的堆栈中,并且在从A按下后退按钮时,它会返回到B和C.
我不想要这种行为。在从C开始活动A时,堆栈只应该有A.我怎么能这样做?
答案 0 :(得分:0)
如果您不关心导航,可以将B和C定义为android:noHistory
顺便说一句。我在某个时刻问了一些相关的问题。您可能有兴趣看看它: How to always start from a startup activity on Android?
答案 1 :(得分:0)
我建议您从通知中启动ActivityA
(而不是ActivityB
),因为您显然希望该活动始终是您的任务中的根活动。向传递给Intent
的{{1}}添加一个额外内容。然后,在Notification
的{{1}}中,您应检查额外是否存在,如果存在,请立即启动onCreate()
。这应该为您提供所需的导航行为。