我有一个端口上有UDP套接字的活动 . 如果按Home键,活动将在后台运行,则调用OnPause()和OnStop()方法 . 现在我想收到一些UDP数据包后恢复活动 . 阅读我理解的其他帖子我必须:
-
将活动声明为
android:launchMode="singleTask"
(或singleInstance
) -
然后,当我想恢复活动时:
Intent intent = new Intent(this.getApplicationContext(), myActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这个解决方案不适用于我 . 对 startActivity(intent)
的调用不显示我在前景上的活动,并且未调用 onResume()
.
以下标志执行此任务但我不想清除任务并重新启动新任务 .
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
1 回答
为了将您自己的任务带到前台,您需要在非活动上下文上调用
startActivity()
,例如:此外,您无需使用任何特殊启动模式(
singleTask
或singleInstance
)即可使用此功能 .这是在Android 4.4中修复的Android错误 . 由于这个问题来自2014年,我将假设OP正在看到这个问题 .
请参阅How to resume Android Activity programmatically from background和评论主题 .