otto源码分析

本文深入探讨了Otto库的源码,揭示了其实现原理及其核心功能。通过对关键方法的分析,帮助读者理解其内部工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

otto这个开源项目是一个event bus模式的消息框架,用于程序各个模块之间的通信,此消息框架可以使得各个
模块之间减少耦合性。

此项目是支付公司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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值