Android:恢复 singleTask 活动
Posted
技术标签:
【中文标题】Android:恢复 singleTask 活动【英文标题】:Android: resume a singleTask activity 【发布时间】:2014-11-17 22:49:31 【问题描述】:我有一个端口上有一个 UDP 套接字的活动。如果我按下 Home 按钮,活动将进入后台,OnPause() 和 OnStop() 方法将被调用。现在我想在收到一些 UDP 数据包时恢复我的活动。 阅读我理解的其他帖子我必须:
-
将活动声明为
android:launchMode="singleTask"
(或singleInstance
)
然后,当我想恢复活动时:
这个解决方案对我不起作用。对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);【问题讨论】:
你的 udp 套接字正在服务中,对吧? 主要活动关闭时套接字处于服务状态。当我创建主要活动时,套接字在服务中未绑定,主要活动绑定它。 【参考方案1】:为了将自己的任务带到前台,需要在非Activity Context上调用startActivity()
,例如:
getApplicationContext().startActivity(intent);
此外,您无需使用任何特殊的启动模式(singleTask
或 singleInstance
)即可使用。
这是在 Android 4.4 中修复的 Android 错误。由于这个问题来自 2014 年,我假设 OP 看到了这个问题。
请参阅How to resume Android Activity programmatically from background 和评论线程。
【讨论】:
以上是关于Android:恢复 singleTask 活动的主要内容,如果未能解决你的问题,请参考以下文章
Android singleTask 还是 singleInstance 启动模式? [关闭]
Android中维护标准应用Activity回栈状态(使用singleTask启动模式)