当前位置: 首页 > 工具软件 > EventBus > 使用案例 >

EventBus 引用

薄兴昌
2023-12-01

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);

转载于:https://www.cnblogs.com/cnmly/p/10223443.html

 类似资料: