EventBus 引用

Posted cnmly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EventBus 引用相关的知识,希望对你有一定的参考价值。

1、功能简述

全局事件(数据)传递,可减少一步一步传递数据的繁琐步骤。

2、gradle接入

(1)module的gradle添加加速索引,不同模块不能包名相同,不然会冲突。

android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
//EventBus 加速索引
arguments.put(‘eventBusIndex‘, ‘org.eventbus.MyEventBusIndex‘)
}
}
}
}

(2)module的gradle接入插件

implementation(‘org.greenrobot:eventbus:3.0.0‘)
annotationProcessor(‘org.greenrobot:eventbus-annotation-processor:3.0.1‘)

(3)project的gradle中

dependencies {
  classpath "com.neenbedankt.gradle.plugins:android-apt:1.8"
  // ButterKnife R2支持
  
classpath ‘com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT‘

}
allprojects {
  repositories {
    google()
    mavenCentral()
    jcenter()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  }
}

3、初始化

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

4、使用方法

 (1)接受配置

@Subscribe(sticky = true)
public void onEventBusReceived(@NonNull EventBusDataBean data){
  // options
}
发送事件(数据):
EventBus.getDefault().postSticky(obj); //可用于加速索引
EventBus.getDefault().post(obj); //常规

备注:sticky = true 如果已有对应的数据,在注册时,会马上收到EventBus数据

(2)注册于解除注册

使用时,需要注册才能接收到数据:

EventBus.getDefault().register(this);

不使用时,解除注册:

EventBus.getDefault().unregister(this);

判断是否注册:

EventBus.getDefault().isRegistered(this);






























以上是关于EventBus 引用的主要内容,如果未能解决你的问题,请参考以下文章

Android App 在片段中创建 ListView 引用时关闭

引用向量的部分片段?

片段对话框对活动的松散引用

EventBus的简单使用

自己动手写事件总线(EventBus)

google guava的消息总线:EventBus,Java