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

问题描述 投票:0回答:2

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

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

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

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

android android-activity homescreen activity-lifecycle android-task
2个回答
0
投票

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

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.