otto这个开源项目是一个event bus模式的消息框架,用于程序各个模块之间的通信,此消息框架可以使得各个
模块之间减少耦合性。
此项目是支付公司square一个开源项目,项目托管于github
https://github.com/square/otto
基本模型是,Android的组件可以注册监听,然后发送消息,接收消息,模式就是观察者模式,但是有别于
java实现的观察者模式,otto更具解耦性,通过注解可以现实监听工作。
otto中的总控制中心的类是Bus,复杂事件的注册分发工作。
首先要把需要把监听事件的组件或者发送事件的组件注册进去
调用Bus的register方法
public void register(Object object)
参数这个对象的所有的事件处理方法(订阅方法)用于处理接受到的事件,生产者方法用于提供事件。
意思是说,这个注册者即可以接收事件,也可以生产事件。
接着说了注册时的一些特殊情况,
(1)如果在注册的时候,订阅了一个事件类型,并且有产生事件的方法,那么会立即调用产生事件的方法,
把事件分发给这个订阅者方法。
(2)如果在注册的时候,产生特定事件的方法已经存在了订阅者,会调用事件产生方法,把事件分发给事件
订阅者。
方法的具体实现分析:
模块之间减少耦合性。
此项目是支付公司square一个开源项目,项目托管于github
https://github.com/square/otto
基本模型是,Android的组件可以注册监听,然后发送消息,接收消息,模式就是观察者模式,但是有别于
java实现的观察者模式,otto更具解耦性,通过注解可以现实监听工作。
otto中的总控制中心的类是Bus,复杂事件的注册分发工作。
首先要把需要把监听事件的组件或者发送事件的组件注册进去
调用Bus的register方法
public void register(Object object)
这个方法的解释是这样的,先看下英文
/**
* Registers all handler methods on {@code object} to receive events and producer methods to provide events.
* If any subscribers are registering for types which already have a producer they will be called immediately
* with the result of calling that producer.
* If any producers are registering for types which already have subscribers, each subscriber will be called with
* the value from the result of calling the producer.
*
* @param object object whose handler methods should be registered.
* @throws NullPointerException if the object is null.
*/
参数这个对象的所有的事件处理方法(订阅方法)用于处理接受到的事件,生产者方法用于提供事件。
意思是说,这个注册者即可以接收事件,也可以生产事件。
接着说了注册时的一些特殊情况,
(1)如果在注册的时候,订阅了一个事件类型,并且有产生事件的方法,那么会立即调用产生事件的方法,
把事件分发给这个订阅者方法。
(2)如果在注册的时候,产生特定事件的方法已经存在了订阅者,会调用事件产生方法,把事件分发给事件
订阅者。
方法的具体实现分析:
public void r