【简介】
EventBus是Android中组件与组件之间通信的框架,可以解耦和简化Activity与Activity、Activity和Fragment、Fragment和Fragment之间的通信。
EventBus主要角色:
- Event 传递的事件对象
- Subscriber 事件的订阅者
- Publisher 事件的发布者
- ThreadMode 定义函数在何种线程中执行
【下载】
github地址:https://github.com/greenrobot/EventBus,如果你希望使用jar包,也可以在这里找到。
【使用】
1:添加 EventBus 到工程:
Via Gradle:
compile 'org.greenrobot:eventbus:3.1.1'
Via Maven:
<dependency>
<groupId>org.greenrobot</groupId>
<artifactId>eventbus</artifactId>
<version>3.1.1</version>
</dependency>
2:使用前应该注册/订阅
EventBus.getDefault().register(this);
3:发布一个事件
EventBus.getDefault().post("message");
4:订阅事件处理
@Subscribe(threadMode = ThreadMode.MAIN,priority = 100) //在ui线程执行,优先级为100
public void onEvent(String message){
Log.e(TAG, message);
}
ThreadMode总共四个:
- MAIN 在UI主线程
- BACKGROUND 后台线程,仅当发布者在UI线程时才会新建一个后台线程执行
- POSTING 和发布者处在同一个线程
- ASYNC 异步线程,无论发布者在哪个线程都重新建一个线程执行
优先级则为一个1000以内的整数
5:优先级高的可以拦截事件向下传递
EventBus.getDefault().cancelEventDelivery(event);
6:注销/解除订阅
EventBus.getDefault().unregister(this);
关于eventbus的使用,先简单记录一下几个步骤。后续再根据示例进行讲解。