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