Android 如何将处理程序传递给LocalBroadcastManager.registerReceiver(…)

Android 如何将处理程序传递给LocalBroadcastManager.registerReceiver(…),android,broadcastreceiver,localbroadcastmanager,Android,Broadcastreceiver,Localbroadcastmanager,Android提供了一个全局registerReceiver()。使用LocalBroadcastManager.registerReceiver()时,没有任何方法接受处理程序。为什么?如何提供处理广播的处理程序 使用LocalBroadcastManager.registerReceiver()时,没有接受处理程序的方法。为什么? 为什么会有?没有任何方法可以接受哈希映射或餐厅 如何提供处理广播的处理程序 您的BroadcastReceiver实例可以在数据成员中保存处理程序,它可以在该处理

Android提供了一个全局
registerReceiver()。使用
LocalBroadcastManager.registerReceiver()时,没有任何方法接受
处理程序。为什么?如何提供处理广播的
处理程序

使用LocalBroadcastManager.registerReceiver()时,没有接受处理程序的方法。为什么?

为什么会有?没有任何方法可以接受
哈希映射
餐厅

如何提供处理广播的处理程序

您的
BroadcastReceiver
实例可以在数据成员中保存
处理程序
,它可以在该处理程序上转发消息


当然,在这种情况下,首先使用
LocalBroadcastManager
没有什么价值。只需使用
处理程序
(可能还有
信使
)。或者,切换到提供更多线程灵活性的事件总线,如greenrobot的EventBus,这样您就可以摆脱
处理程序

我意识到我可以在
广播接收器
中存储
处理程序
的实例。但是当注册一个全局的
BroadcastReceiver
时也是如此,但是Android提供了一个
registerReceiver
方法,它确实需要一个
处理程序。这要么表明API设计糟糕,要么表明我对API缺乏理解,因此我提出了这个问题。我确实更喜欢使用某种消息传递协议,因为我认为它产生的代码比从各种服务发布到共享处理程序更干净。感谢指向greenrobot事件总线的指针,我来看看。@zyamys:“然而Android提供了一个registerReceiver方法,它确实需要一个处理程序”——我从来没有注意到它,也没有看到它被使用过。我的猜测是,这并不是那么普遍,当他们启动
LocalBroadcastManager
时,为了简单起见,他们跳过了它
LocalBroadcastManager
并不意味着它是系统级广播(仅本地)的完整实现,因为它也不提供有序广播、粘性广播等。尽管如此,我很抱歉不知道配备了
处理程序的
registerReceiver()
。但处理程序可用于使接收器在HandlerThread上工作。no?