0

我有一个启动模式为 Single Task 的活动。该活动由广播接收器使用意图标志 Intent.FLAG_ACTIVITY_NEW_TASK 启动。如果此活动位于主屏幕顶部,并且如果我从此活动调用 moveTasktoBack(true),我希望显示主屏幕而不是主屏幕,来自另一个任务的活动 B 被带到前面。操作顺序如下。

任务 B 中的活动 B -> [按主页按钮] -> 主屏幕 -> 通过广播接收器启动活动 A -> 活动 A 调用 moveTaskToBack(true) -> 任务 B 中的活动 B 进入前台。

我检查了任务 A(带有活动 A)和任务 B(带有活动 B)的任务关联性,它们是不同的。

我如何确保在这种情况下,当活动将自身移动到堆栈后面时会显示主屏幕。

4

2 回答 2

0

无需将任务移至后台,只需像这样启动主屏幕:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
于 2015-02-06T13:18:50.567 回答
0

在尝试使用堆栈中的更多活动(来自不同的应用程序)和自动情况(即以编程方式接收广播事件时)执行 moveTaskToBack(true)时,我遇到了自己的问题。我不确定确切的原因是什么。但是我使用核选项解决了它们:我没有尝试将活动/任务移到后面,而是使用完成()杀死了它。它运作良好,在我想的所有情况下。可能会减慢速度,因此请谨慎使用,但就我而言,它解决了问题。而且,当然,您需要保存所有相关的状态信息并恢复它。在我的情况下,这不是一个大问题。

于 2018-09-16T09:45:40.293 回答