在主屏幕顶部的Activity上调用movetasktoback方法不会将主屏幕置于前台

时间:2015-02-06 05:24:11

标签: android android-activity homescreen activity-lifecycle android-task

我有一个以启动模式为单一任务的活动。活动由广播接收器通过意图标志Intent.FLAG_ACTIVITY_NEW_TASK启动。如果此活动位于主屏幕之上,并且如果我从此活动调用moveTasktoBack(true),我希望显示主屏幕而不是主屏幕,将来自其他任务的活动B放在前面。操作顺序如下。

TASK B中的活动B - > [按主页按钮] - >主屏幕 - >由BroadCast Receiver启动活动A - >活动A调用moveTaskToBack(true) - >任务B中的活动B来到前台。

我已经检查了任务A(带有活动A)和任务B(带有活动B)的任务亲和力,它们是不同的。

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

2 个答案:

答案 0 :(得分:0)

不要将任务移到后台,只需启动HOME屏幕,如下所示:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

答案 1 :(得分:0)

当尝试在堆栈中以及在自动情况下(即,以编程方式接收广播事件)对更多任务(来自不同应用程序)进行moveTaskToBack(true)时,我遇到了自己的问题。我不确定确切原因是什么。但是我使用了核选项解决了它们:我没有尝试将Activity /任务移回去,而是使用finish()杀死了它。在我认为的所有情况下,它都能正常工作。可能会使速度变慢,因此请谨慎使用,但就我而言,它可以解决问题。而且,当然,您需要保存所有相关的状态信息并进行还原。就我而言,这不是什么大问题。