Android 如何将处理程序传递给LocalBroadcastManager.registerReceiver(…)
Android提供了一个全局Android 如何将处理程序传递给LocalBroadcastManager.registerReceiver(…),android,broadcastreceiver,localbroadcastmanager,Android,Broadcastreceiver,Localbroadcastmanager,Android提供了一个全局registerReceiver()。使用LocalBroadcastManager.registerReceiver()时,没有任何方法接受处理程序。为什么?如何提供处理广播的处理程序 使用LocalBroadcastManager.registerReceiver()时,没有接受处理程序的方法。为什么? 为什么会有?没有任何方法可以接受哈希映射或餐厅 如何提供处理广播的处理程序 您的BroadcastReceiver实例可以在数据成员中保存处理程序,它可以在该处理
registerReceiver()。使用LocalBroadcastManager.registerReceiver()时,没有任何方法接受处理程序。为什么?如何提供处理广播的处理程序
使用LocalBroadcastManager.registerReceiver()时,没有接受处理程序的方法。为什么?
为什么会有?没有任何方法可以接受哈希映射
或餐厅
如何提供处理广播的处理程序
您的BroadcastReceiver
实例可以在数据成员中保存处理程序
,它可以在该处理程序上转发消息
当然,在这种情况下,首先使用LocalBroadcastManager
没有什么价值。只需使用处理程序
(可能还有信使
)。或者,切换到提供更多线程灵活性的事件总线,如greenrobot的EventBus,这样您就可以摆脱处理程序
我意识到我可以在广播接收器
中存储处理程序
的实例。但是当注册一个全局的BroadcastReceiver
时也是如此,但是Android提供了一个registerReceiver
方法,它确实需要一个处理程序。这要么表明API设计糟糕,要么表明我对API缺乏理解,因此我提出了这个问题。我确实更喜欢使用某种消息传递协议,因为我认为它产生的代码比从各种服务发布到共享处理程序更干净。感谢指向greenrobot事件总线的指针,我来看看。@zyamys:“然而Android提供了一个registerReceiver方法,它确实需要一个处理程序”——我从来没有注意到它,也没有看到它被使用过。我的猜测是,这并不是那么普遍,当他们启动LocalBroadcastManager
时,为了简单起见,他们跳过了它LocalBroadcastManager
并不意味着它是系统级广播(仅本地)的完整实现,因为它也不提供有序广播、粘性广播等。尽管如此,我很抱歉不知道配备了处理程序的registerReceiver()
。但处理程序可用于使接收器在HandlerThread上工作。no?