在Activity
和IntentService
之间进行通信的方法之一是使用BroadcastReceiver
(或本地1)和“sendBroadcast()
”方法。
BroadcastReceiver
- onResume
(可见生命周期)时, onPause
才会收听。
那么如果:
Activity
已创建且可见,因此我们的BroadcastReceiver
正在倾听IntentService
,此服务正在后台运行...(例如,与服务器连接并检查内容)。Activity
开始变得不可见,因为有人关闭了屏幕。因此,在onPause方法中,我们的BroadcastReceiver
为unregistered
。如何应对这种情况?如果我们希望Activity获取有关intentservice是否已停止并终止其工作或类似内容的信息。
答案 0 :(得分:0)
如何处理这种情况?
您可以像处理各种其他情况一样处理此问题,例如用户按下BACK(从而销毁活动)并在UI中执行某些操作来创建活动的新实例。
从服务到活动的消息传递是一个推送界面,适用于实时更新。您还需要 pull 界面,其中活动可以获取当前状态。并且,在许多情况下,还需要考虑持久性,因为在新活动实例需要显示这些结果时,服务甚至整个过程可能会早已消失。
因此,细节将在很大程度上取决于服务正在做什么以及UI如何确定该工作现在是否已完成以及结果如何。例如,这可能涉及查询数据库。