我需要启动一个外部activity
(不是我的)一瞬间,然后我有一个service
启动我以前activity
的用户查看。
这很好用,但问题是当用户按下后退键时,他会到达那个 external activity
。
我在activity
这里有两个不同的启动,一个用于 external activity
,一个用于我activity
返回(我需要使用FLAG_ACTIVITY_NEW_TASK
它,因为我从 a 启动它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"
在清单中设置。
有任何想法吗?
更新:似乎问题是我从服务重新启动了我以前的活动,这意味着我需要从任务和返回堆栈的文档中给它 FLAG_ACTIVITY_NEW_TASK :
FLAG_ACTIVITY_NEW_TASK 在新任务中启动活动。如果您正在启动的 Activity 的任务已经在运行,则该任务将被带到前台并恢复其最后状态,并且该 Activity 在 onNewIntent() 中接收新意图。这会产生与上一节中讨论的“singleTask”launchMode 值相同的行为。
从 singleTask 段落:
"singleTask" 系统创建一个新任务,并在新任务的根目录下实例化activity... 注意:虽然activity在一个新任务中开始,但是Back按钮仍然让用户返回到前一个activity。
所以我需要一个以某种方式覆盖这种行为的标志......