EventBus系列:Event Bus 3.0中索引Subscriber Index使用指南

Posted zhangjin1120

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EventBus系列:Event Bus 3.0中索引Subscriber Index使用指南相关的知识,希望对你有一定的参考价值。

目录

为什么要使用索引?

Subscriber Index(订阅者索引)是一个可选择的优化技术,用来加速初始化subscriber注册。具体怎么加速的,有时间再研究吧!

怎么用?

以下是Gradle 3.0中配置方式-annotationProcessor方式,其中步骤4为重点,我当初按照前三个步骤设置完毕后,竟然一直添加不成功,生成不了目标类。

1、在项目的build.gradle中添加对EventBus库的引用,需要引入EventBus库eventbus工程和注解编译器eventbus-annotation-processor

2、为了使注解编译器自动生成索引类,需要在指定索引类名的全路径。

   javaCompileOptions 
           annotationProcessorOptions 
               // 这里com.example.myapp为你开发所在项目的包名,MyEventBusIndex为类名,可任意指定
               arguments = [ eventBusIndex : 'com.example.myapp.MyEventBusIndex' ]
           
    

3、最终在build.gradle文件中的样式为:

android 
 defaultConfig 
     javaCompileOptions 
         annotationProcessorOptions 
            // 这里com.example.myapp为你开发所在项目的包名,MyEventBusIndex为类名,可任意指定
             arguments = [ eventBusIndex : 'com.example.myapp.MyEventBusIndex' ]
         
     
 


dependencies 
 implementation 'org.greenrobot:eventbus:3.1.1'
 annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1'

4、也是重点的步骤,初学者往往会有疑惑的地方

如果此时,重新编译工程,然后按照EventBus给出的教程添加索引初始化时,会提示找不到MyEventBusIndex类。原因是此时工程中还没有使用@SubScribe注解,所以注解编译器无法生成MyEventBusIndex类。所以需要先使用@SubScribe注解之后,重新编译,即可生成MyEventBusIndex类,然后使用

以上是关于EventBus系列:Event Bus 3.0中索引Subscriber Index使用指南的主要内容,如果未能解决你的问题,请参考以下文章

EventBus - Android's Event Bus

Java Review - Java进程内部的消息中间件_Event Bus设计模式

事件总线(Event Bus)

EventBus/EventQueue 再思考

EventBus 3.0使用与源码分析

Java Review - 使用Event Bus实现目录变化的监控