建议在EventBus / Otto中使用Handler?

时间:2014-05-19 15:52:19

标签: java android multithreading message-passing otto

使用像Otto和EventBus这样的库我想知道使用Handler是否仍然有意义:

  

Handler允许您发送和处理Message和Runnable对象   与线程的MessageQueue相关联。每个Handler实例都是   与单个线程和该线程的消息队列相关联。

除事件总线库外,如何使用处理程序?我认为使用vanilla线程并直接通过事件总线发送消息就足够了,或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:10)

通常,您会针对不同的问题使用事件总线库和处理程序。

事件总线库允许信息消费者订阅特定事件和生产者来发布它们,而发布者和订阅者组件不需要彼此了解任何事情。不止一个消费者可以订阅一个活动;不止一个制作人可以发布它。该模型是多对多的。

另一方面,处理程序是一对一的。您发送消息或发布Runnable,它只由目标处理程序处理一次,除非在执行之前删除。处理程序的核心目的是在线程上安排工作,如您引用的文档中所述。

可以使用处理程序和消息来实现事件总线。例如,让总线成为Handlers和事件Messages的集合。事件消息将发送给那些已将自己注册为特定事件类型的订阅者的处理程序。