我有一个活动,启动一个异步任务,该任务监听来自服务器的消息。当用户单击“主页”按钮时,活动将暂停,并且异步任务将继续在后台运行。当某条消息到达时,我希望活动能够继续进行并走到最前面而不被重新创建。我尝试了以下方法。
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);
但是这些都没有把活动摆在最前面。
恢复应用程序的正确标志是什么,例如从主屏幕重新启动应用程序时会发生什么。
我发现以下似乎有效的解决方案。这有点令人费解,但我想要的。
请参阅:将任务放在android.intent.action.USER_PRESENT上
我制作了以下方法来调用BringToFront活动,该活动只需调用finish()即可;
private void bringToFront()
{
Intent i = new Intent(getBaseContext(), BringToFront.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(i);
}
在我看来,应该有一种更简单的方法将一项任务放在最前面。请稍等一下,看看是否有更好的建议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句