?(^^*) 五一假期在家无事, 新项目中用的是 RxJava2+EventBus 感觉还不错, 趁这闲暇总结下 EventBus
一, 概要简述
EventBus 是一个基于观察者模式的 Android 事件发布 / 订阅框架, 通过解耦发布者和订阅者简化 Android 事件传递, 这里的事件可以理解为消息. 事件传递既可以用于 Android 四大组件间通讯, 也可以用于异步线程和主线程间通讯等.
EventBus 的出现, 是为了解决传统的通过 Interface 的事件传递所出现的回调地狱的问题, 相比之下 EventBus 的有点是代码简洁, 使用简单, 并将事件发布和 订阅充分解耦.
EventBus 由三部分组成: event 事件, subscriber 订阅者, publisher 发布者.
EventBus 官网地址: http://greenrobot.org/eventbus/
EventBus GitHub : https://github.com/greenrobot/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>
第一步 定义事件
事件是 POJO(普通的旧 Java 对象), 没有任何特定的要求.
- public class MessageEvent {
- public final String message;
- public MessageEvent(String message) {
- this.message = message;
- }
- }
第二步 准备订阅者 - Subscriber
- // This method will be called when a MessageEvent is posted (in the UI thread for Toast)
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onMessageEvent(MessageEvent event) {
- Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
- }
- // This method will be called when a SomeOtherEvent is posted
- @Subscribe
- public void handleSomethingElse(SomeOtherEvent event) {
- doSomethingWith(event);
- }
订阅者需要 registe 和 unregist
待续..2018 年 4 月 29 日 21:00:47
来源: http://www.bubuko.com/infodetail-2580663.html