3

我有一个启动异步任务的活动,该任务监听来自服务器的消息。当用户点击主页按钮时,活动暂停,异步任务继续在后台运行。当某条消息到达时,我希望该活动恢复并来到最前面而不被重新创建。我尝试了以下方法。

android: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);

但这些都没有将活动推向前台。

恢复应用程序的正确标志是什么,例如如果我从主屏幕重新启动它会发生什么。

4

1 回答 1

6

我发现以下似乎可行的解决方案。这有点令人费解,但可以满足我的要求。

请参阅:在 android.intent.action.USER_PRESENT 上将任务置于最前面

我做了以下方法来调用简单调用完成()的BringToFront活动;

private void bringToFront()
{
   Intent i = new Intent(getBaseContext(), BringToFront.class);
   i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   getBaseContext().startActivity(i);
}

在我看来,应该有一种更简单的方法来将任务放在前面。将开放一段时间,看看是否建议了更好的解决方案。

于 2013-09-18T20:14:04.140 回答