我需要暂时启动一个外部activity
(这不是我的),然后我有一个service
启动我之前的activity
供用户查看
这很有效,但问题是当用户按下后退键时,他会到达外部activity
。
我在这里发布了两个不同的activity
,一个用于外部activity
,另一个用于activity
返回(我需要使用FLAG_ACTIVITY_NEW_TASK
因为service
我是从FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
开始的。
对于这两次发布,我尝试了以下任意组合:
FLAG_ACTIVITY_NO_HISTORY
,FLAG_ACTIVITY_NEW_TASK
,FLAG_ACTIVITY_CLEAR_TOP
,FLAG_ACTIVITY_CLEAR_TASK
,FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
,activity
。
没有任何帮助,我在按下后继续看到外部noHistory="true"
。
我在这里看到了一些类似的问题,但是他们在自己的应用中都有中间活动,因此他们可以在其上调用完成,或者在清单中设置{{1}}。
有什么想法吗?
更新: 似乎问题是我从服务中重新启动我以前的活动,这意味着我需要从Tasks and Back Stack的文档中给它FLAG_ACTIVITY_NEW_TASK:
FLAG_ACTIVITY_NEW_TASK在新任务中启动活动。如果任务是 已经为你现在开始的活动而运行,那个任务就是 带着它的最后一个状态恢复到前台 activity在onNewIntent()中接收新意图。 这产生了 与“singleTask”launchMode值相同的行为,在讨论中 上一节。
来自singleTask段落:
“singleTask”系统创建新任务并在新任务的根目录下实例化活动 ... 注意:虽然活动开始于 新任务,后退按钮仍然将用户返回到上一个 活性
所以我需要一个以某种方式覆盖此行为的标志......