andorid jar/库源码解析 EventBus

kururunga 2020-04-23

目录:andorid jar/库源码解析 

EventBus:

用于不同Activity,Service等之间传递消息(数据)。

A:onCreate定义   EventBus.getDefault().register(this);

  onDestroy定义 <span>EventBus<span>.<span>getDefault<span>(<span>)<span>.<span>unregister<span>(<span>this<span>)<span>;</span></span></span></span></span></span></span></span></span></span></span>

       添加public方法,一个Object参数(所有继承与Object的对象),用于接收消息通知。

B:使用  EventBus.getDefault().post(new 对象);  通知消息(这个时候,如果是同一个类型对象,A中的方法可以收到通知)

源码解读:

EventBus.getDefault()

  使用,双重判断,创建/获取一个EventBus对象。

.register(

注册当前类对象,到EventBus的缓存中,保存当前类,包含 Subscribe 注释的public方法且只有一个参数。

同时安装参数对象的种类,对数据进行在分类存储,便于查找。然后循环,当前类的父类,同样的操作,直到,父类StartWith android.、androidx.、java.、javax.。

.<span><span><span><span><span><span><span>unregister(</span></span></span></span></span></span></span>

  移除刚刚注册的对象,和方法信息,和注册的方法成员的类型对应的类信息。

.post(

  从记录注册表中查找,当前对象对应的注册类集合,数据记录的时候,保存的集合,进行循环调用。已注册方法(调用 cancelEventDelivery,可以结束调用后续方法)。

方法有多种调用模式,其实内部就四种调用方式:1、直接调用方法。2、主线程,使用自定义Handler来调用方法。3、使用新建线程,来调用方法。4、线程池来调用方法。

相关推荐