EventBus解析

首先EventBus会先将一个类注册为一个接收者,在这个类中定义你要接收的事件方法。在注册的时候会先找出这个类中所有要监听的方法,首先从缓存中查找,如果找到了就立马返回。找的时候是先从里面一个状态池中取出一个没有被使用的状态对象,若所有的状态对象都已经被使用,则新new一个状态对象。这个状态对象用来存储接收者所对应的类,后续是用来寻找接收者中所对应的事件方法。在找这个类的注册方法时候,先去获取这个类的所有方法,然后再去筛选。筛选的时候会先判断这个方法是否只有一个参数,然后看他是否存有注解。如果符合要求,就将被监视方法的相关信息存储在findstate对象中,接着将已经找全信息的findestate对象进行回收。在回收之前,先将findstate对象中的监视方法的相关信息放进一个list并返回,接着在findstate这个对象池中遍历找到一个空的位置然后将此对象放回去,这样就完成了findstate对象的回收,并利用findstate对象找完了注册类中需要监视的方法。找完之后将监视类与所找到的监视方法相关信息放进缓存中,这样就能完成在下一次注册的时候不要寻找直接拿出缓存。最后将找出的方法以事件类别为键放入map中进行存储管理、最后将监视对象类的实例与监视方法放进map中以对象为键进行存储管理

EventBus的发送事件的方法: 他会将所有的事件都放入到一个队列中,当队列不为空的时候循环队,遍历事件,并发送处理事件。遍历事件的时候,先根据事件的类名找出对应的监测者,然后通过检测者反射调用此方法就完成了EventBus的高解耦操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值