【发布时间】:2014-04-06 15:40:03
【问题描述】:
最好的方法是什么?
1) MainActivity(即 UI)被创建并启动一个开始监听 TCP 套接字的服务(它应该是一个 IntentService,因为 MainActivity 是唯一的客户端吗?)。
2) 服务接收消息并在出现问题时更新 UI(使用 LocalBroadcastManager?)。
3) 用户通过单击返回或主页按钮关闭活动。 MainActivity 不再处于活动状态,但服务应继续在后台运行,接收消息并以某种方式与 MainActivity(不存在)通信。我对此一无所知,类似于 runOnUiThread()?
4) 当用户返回并恢复 MainActivity 时,UI 不仅应显示新消息,还应显示“旧”消息:自服务启动以来收到的每条消息。
5) 消息不是永久的:如果整个应用程序被杀死,手机关闭 ecc,它们应该被删除。它们具有相同的服务生命周期。
我担心没有像与不活动的活动通信这样的事情(第 3 点),我应该在本地文件中写入消息,检查它是否有更新 onCreate() 和 onResume()。有没有更聪明的方法?第 3 点和第 4 点是关键点。实现它们的最佳方法是什么? (无需编写代码,只需使用关键字或示例链接进行说明即可。
【问题讨论】:
-
您需要将消息缓存在数据库中,并且可以使用同步适配器。下载并查看 Google I/O aap
标签: android android-intent service