我需要暂时启动一个外部 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
.
我在这里看到了一些类似的问题,但是他们都在自己的应用程序中有中间活动,因此他们可以在其上调用finish,或者在清单中设置 noHistory="true"
.
有任何想法吗?
更新:似乎问题是我从服务重新启动我以前的活动,这意味着我需要从Tasks and Back Stack的文档中给它FLAG_ACTIVITY_NEW_TASK:
FLAG_ACTIVITY_NEW_TASK在新任务中启动活动 . 如果任务已在您正在启动的活动上运行,则该任务将返回到前台,并恢复其上一个状态,并且活动将在onNewIntent()中接收新的意图 . 这会产生与上一节中讨论的“singleTask”launchMode值相同的行为 .
并从singleTask段落:
“singleTask”系统创建一个新任务并在新任务的根目录下实例化活动...注意:虽然活动在新任务中启动,但“返回”按钮仍会将用户返回到上一个活动 .
所以我需要一个以某种方式覆盖这种行为的旗帜......