【发布时间】:2023-03-25 02:15:02
【问题描述】:
我使用EventBus 在Activity 和Service 之间进行通信。
今天我遇到了一个问题,不知道为什么。
我有
Activity、Fragment和Service。他们都工作正常。在
Activity和Fragment我registered他们到Receiveevents从Service交付在
Activity和Fragment中,当onDestroy()被调用时,我un-register他们。在正常情况下,
Services传递events,Fragment和Activity可以接收那些events并正常工作。但是当
App被推到background上时(通过按主页或电源按钮),只有Fragment接收从Service传递的事件,而Activity不接收它们。我在
onPause()和Activity和Fragment中都没有做任何事情。
问题:
对此有什么解释吗?我怎样才能让我的Activity 收到像Fragment 这样的事件,当应用程序被推送到后台时?
【问题讨论】:
-
也许活动的
onDestroy被调用并取消注册。 -
从你的 onDestroy 方法中删除
unregister(this);,然后试试。 -
I'm using EventBus to communicate between Activity and Service这是错误的做法,请改用“绑定本地服务”模式 -
因为您现在遇到的问题?如果您按下主页/返回按钮,您的活动可能随时被销毁,因此它不会收到任何数据
-
我认为完全摒弃 eventbus 作为应用程序/服务通信的选项是不公平的。这仅取决于消息的目的。如果应用程序依赖于服务的状态,那么绑定是最好的选择。如果服务引发事件,那么总线会更好。此外,粘性事件将让您的活动在再次注册后接收事件。
标签: android android-fragments service background-process event-bus