我有一个活动启动异步任务,侦听来自服务器的消息。当用户点击主页按钮时,活动暂停,异步任务继续在后台运行。当某个消息到达时,我希望活动恢复并在不重新创建的情况下到达前面。我尝试了以下内容。
机器人:launchMode = “singleTop”
intent = new Intent(getBaseContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
这会将活动带到前面但重新开始活动。
我也试过
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
但这些都没有将活动带到前线。
恢复应用程序的正确标志是什么,如果我从主屏幕重新启动它会发生什么。
答案 0 :(得分:6)
我发现以下似乎有效的解决方案。这有点令人费解,但做了我想做的事。
请参阅:Bring task to front on android.intent.action.USER_PRESENT
我使用以下方法调用简单调用finish();
的BringToFront活动private void bringToFront()
{
Intent i = new Intent(getBaseContext(), BringToFront.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(i);
}
在我看来,应该有一种更简单的方法将任务带到前线。将保持开放以确定是否建议更好的解决方案。