【发布时间】:2014-02-25 07:38:48
【问题描述】:
Activity 和IntentService 之间的一种通信方式是使用BroadcastReceiver(或本地)和“sendBroadcast()”方法。
BroadcastReceiver 仅在 Activity 处于 onResume - onPause(可见生命周期)中时才会监听。
如果:
-
Activity已创建且可见,因此我们的BroadcastReceiver正在监听 - 我们正在启动新的
IntentService,此服务正在后台运行...(例如连接服务器并检查某些内容)。 -
Activity开始不可见,因为有人关闭了屏幕。所以在 onPause 方法中,我们的BroadcastReceiver是unregistered。 - Intent 服务完成他的任务并让 sendBroadcast 通知更改的状态或活动应该知道的其他内容。 但是现在接收器未注册,因此此广播消息消失了。
- 用户打开屏幕,活动再次可见(但它没有来自意图服务的信息)。 Intent 服务消息丢失。
遇到这种情况怎么办?如果我们希望 Activity 获得有关 intentservice 是否停止并结束其工作或类似情况的信息。
【问题讨论】:
标签: android service broadcastreceiver broadcast intentservice