以前的項(xiàng)目中使用的都是EventBus 2.x,現(xiàn)在換成了EventBus 3.0,關(guān)于怎么用吆录,這里不寫(xiě)了,一搜一大片琼牧,此處主要記錄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" //自動(dòng)生成的索引包名
}
}
dependencies {
compile 'org.greenrobot:eventbus:3.0.0'
apt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
}
3撬槽、編譯一次
自動(dòng)生成索引類此改。在\build\generated\source\apt\PakageName(此處我寫(xiě)的PackageName是com.calvinning)
4、 應(yīng)用我們生成好的索引,并把自定義的設(shè)置應(yīng)用到 EventBus 默認(rèn)的單例中
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
就是說(shuō)要應(yīng)用我們生成好的索引侄柔,須在你第一次獲得EventBus實(shí)例之前執(zhí)行上述代碼共啃,鑒于此,我的做法是在自定義的Application里面執(zhí)行這句代碼暂题,之后需要注冊(cè)EventBus的地方依然調(diào)用EventBus.getDefault().
** 至于使用索引效率提升的測(cè)試移剪,鑒于反射機(jī)制就是遍歷注冊(cè)的觀察者的所有函數(shù) ,所以我的方法是在Activity里面寫(xiě)了50個(gè)訂閱事件敢靡,然后測(cè)試register方法的執(zhí)行時(shí)間挂滓,不使用索引是25毫秒,使用索引是8毫秒啸胧。**
參考文章
老司機(jī)教你 “飆” EventBus 3
EventBus3.0性能優(yōu)化之添加索引(Index)
EventBus3.0使用詳解
Android消息傳遞之EventBus 3.0使用詳解
看API到官方網(wǎng)站##
github地址:https://github.com/greenrobot/EventBus
官方文檔:http://greenrobot.org/eventbus/documentation