对于 Otto 和 EventBus 等库,我想知道使用Handler是否仍然有意义:
Handler 允许您发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。每个 Handler 实例都与单个线程和该线程的消息队列相关联。
除了事件总线库之外,如何使用处理程序?我认为使用普通线程并直接通过事件总线发送消息就足够了,还是我在这里遗漏了什么?
对于 Otto 和 EventBus 等库,我想知道使用Handler是否仍然有意义:
Handler 允许您发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。每个 Handler 实例都与单个线程和该线程的消息队列相关联。
除了事件总线库之外,如何使用处理程序?我认为使用普通线程并直接通过事件总线发送消息就足够了,还是我在这里遗漏了什么?
通常您使用事件总线库和处理程序来解决不同的问题。
事件总线库允许信息消费者订阅特定事件和生产者发布它们,而发布者和订阅者组件不需要真正了解彼此的任何信息。多个消费者可以订阅一个事件;不止一个生产者可以发布它。该模型是多对多的。
另一方面,处理程序是一对一的。您发送 Message 或发布 Runnable 并且它仅由目标 Handler 处理一次,除非在执行之前将其删除。正如您引用的文档中所述,处理程序的核心目的是在线程上安排工作。
您可以使用处理程序和消息来实现事件总线。例如,让总线是处理程序和事件消息的集合。事件消息被发送到那些已将自己注册为特定事件类型订阅者的处理程序。