我有一个以启动模式为单一任务的活动。活动由广播接收器通过意图标志Intent.FLAG_ACTIVITY_NEW_TASK启动。如果此活动位于主屏幕之上,并且如果我从此活动调用moveTasktoBack(true),我希望显示主屏幕而不是主屏幕,将来自其他任务的活动B放在前面。操作顺序如下。
任务B中的活动B - > [按主页按钮] - >主屏幕 - >通过BroadCast接收器启动活动A - >活动A调用moveTaskToBack(true) - >任务B中的活动B进入前台。
我检查了任务A的任务亲和力(带有活动A)和任务B(带有活动B),它们是不同的。
如何确保在这种情况下,当活动将自身移动到堆栈后面时,将显示主屏幕。
不要将任务移到后台,只需启动HOME屏幕,如下所示:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
尝试使用堆栈中的更多活动(来自不同的应用程序)和自动情况(即,以编程方式接收广播事件)尝试执行moveTaskToBack(true)时,我遇到了自己的问题。我不确定究竟是什么原因。但我使用核选项解决了它们:我没有尝试将Activity /任务移回,而是使用finish()将其杀死。在我认为的所有情况下,它运作良好。可能会慢一点,所以请谨慎使用,但在我的情况下它解决了问题。当然,您需要保存所有相关的状态信息并将其恢复。在我的情况下,这不是一个大问题。