EventBus 3.0使用

以前的项目中使用的都是EventBus 2.x,现在换成了EventBus 3.0,关于怎么用,这里不写了,一搜一大片,此处主要记录EventBusAnnotationProcessor的使用。

1、 project下build.gradle的配置

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

2、app下build.gradle的配置

apply plugin: 'com.neenbedankt.android-apt'
apt {
    arguments {
        eventBusIndex "com.calvinning.MyEventBusIndex" //自动生成的索引包名
    }
}
dependencies {
    compile 'org.greenrobot:eventbus:3.0.0'
    apt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
}

3、编译一次

自动生成索引类。在\build\generated\source\apt\PakageName(此处我写的PackageName是com.calvinning)

EventBus 3.0使用_第1张图片
Paste_Image.png

4、 应用我们生成好的索引,并把自定义的设置应用到 EventBus 默认的单例中

EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus();

installDefaultEventBus的注释如下:

Installs the default EventBus returned by {@link EventBus#getDefault()} using this builders' values.
Must be * done only once before the first usage of the default EventBus.
@throws EventBusException if there's already a default EventBus instance in place

就是说要应用我们生成好的索引,须在你第一次获得EventBus实例之前执行上述代码,鉴于此,我的做法是在自定义的Application里面执行这句代码,之后需要注册EventBus的地方依然调用EventBus.getDefault().
** 至于使用索引效率提升的测试,鉴于反射机制就是遍历注册的观察者的所有函数 ,所以我的方法是在Activity里面写了50个订阅事件,然后测试register方法的执行时间,不使用索引是25毫秒,使用索引是8毫秒。**


参考文章

老司机教你 “飙” EventBus 3
EventBus3.0性能优化之添加索引(Index)
EventBus3.0使用详解
Android消息传递之EventBus 3.0使用详解

看API到官方网站##

github地址:https://github.com/greenrobot/EventBus
官方文档:http://greenrobot.org/eventbus/documentation

你可能感兴趣的:(EventBus 3.0使用)