这是我正在寻找的行为:
启动应用并导航=>活动A> B> C 然后我按Home键再次打开App =>返回C(堆栈A B C)
现在我正在运行一个创建通知的服务。 点击通知=>清除堆栈中的任何内容并从onNewIntent()打开A然后打开X(堆栈现在是A> X)
但点击通知时的当前行为是A B C A X(顶部为X)
据我所知,由于背景错误,这种情况正在发生。有关空白背景问题https://stackoverflow.com/a/24999724
的详细信息,请参阅以下帖子所以我的结论是使用"标准" launchMode并找到一种方法,在单击通知时清除所有活动中的堆栈。是否有任何模式可以实现以获得此行为?
答案 0 :(得分:0)
这与"错误的背景"无关。如果要单击Notification
以清除任务堆栈并启动ActivityA
的新实例,请在Intent
中使用Notification
中的以下标记:
Intent.FLAG_ACTIVIY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP
假设ActivityA
仍处于活动状态(未完成)且位于任务堆栈的根目录,他将清除任务堆栈回ActivityA
(包括清除{{1}的现有实例}),然后创建ActivityA
的新实例并调用ActivityA
等等。
如果您想重用onCreate()
的现有实例,可以改用:
ActivityA
假设Intent.FLAG_ACTIVIY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
仍处于活动状态(未完成)且位于任务堆栈的根目录,他将清除任务堆栈至ActivityA
(不清除任务堆栈现有的ActivityA
}实例,然后在ActivityA
的现有实例上调用onNewIntent()
。