2

我需要启动一个外部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

所以我需要一个以某种方式覆盖这种行为的标志......

4

0 回答 0