EventBus的简单使用方法 【Android学习笔记|EventBus的简单使用方法】
文章目录
- EventBus的简单使用方法
- 1.简介
- 2.添加依赖
- 3.使用简介
- 3.1 定义一个事件类(Bean)
- 3.2 在需要订阅事件的地方注册事件
- 3.3 订阅事件
- 3.4 及时取消注册事件订阅
- 3.5 发布事件
- 3.6 ProGuard混淆
- 3.7 Sticky 粘性事件
- 4.其他
1.简介
2.添加依赖
- EventBus是针对Android 和Java的发布/订阅的事件总线。
- 简化了组件之间的通信。
- 使代码更简单。
- 快速、很小(~ 50 k jar)。
- 高级特性:线程分发、订阅优先级等。
- 官网:https://github.com/greenrobot/EventBus
implementation 'org.greenrobot:eventbus:3.1.1'
3.使用简介 3.1 定义一个事件类(Bean)
public static class MessageEvent {
...
}
3.2 在需要订阅事件的地方注册事件
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
3.3 订阅事件
- 线程模型:
- POSTING:事件的处理在发布事件的线程执行。
- MAIN:事件的处理在UI线程执行。
- BACKGROUND:若发布事件的线程是UI线程,则事件的处理在新启的子线程执行;若发布事件的线程是子线程,则事件的处理在该子线程执行。
- ASYNC:事件的处理在新启的子线程执行。
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
...
};
3.4 及时取消注册事件订阅
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
3.5 发布事件
EventBus.getDefault().post(new MessageEvent());
3.6 ProGuard混淆
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe ;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *;
}
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
(java.lang.Throwable);
}
3.7 Sticky 粘性事件
- 粘性事件即在事件发布之后再注册,仍然可以订阅到该事件。
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void onMessageEvent(MessageEvent event) {
...
};
4.其他
- RxBus :基于 RxJava 的事件总线。
推荐阅读
- 数据结构和算法|LeetCode 的正确使用方式
- #|7.分布式事务管理
- #|算法设计与分析(Java实现)——贪心算法(集合覆盖案例)
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- #|阿尔法点亮LED灯(一)汇编语言
- #|Multimedia
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控
- #|学习笔记 | Ch05 Pandas数据清洗 —— 缺失值、重复值、异常值
- win10|搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。