EventBus的简单介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EventBus的简单介绍
EventBus是什么?
EventBus,顾名思义,是“事件总线”的意思。

更具体的说是⼀个针对Java和Android的事件发布/订阅框架( is a publish/subscribe event bus for Android and Java.)
图⽰:
EventBus的使⽤
1.定义事件
public class MessageEvent {
private String name;
public MessageEvent(String name) {
= name;
}
@Override
public String toString() {
return "MessageEvent{" +
"name='" + name + '\'' +
'}';
}
}
2.订阅
普通订阅:
需要先进⾏注册,然后在有相对应的信息发出时,可以获取到信息。

//注册和移除需要确定在哪个⽣命周期进⾏
//注册
EventBus.getDefault().register(this);
//移除
EventBus.getDefault().unregister(this);
//事件处理:
//threadMode有四种类型(MAIN、POSTING、BACKGROUND、AYSNC)
@Subscribe(threadMode = ThreadMode.MAIN)
public void MessageEventBus(MessageEvent event) {
tvEventbusResult.setText(event.toString());
}
粘性订阅
不需要先注册,当已经有粘性信息发出,注册时即收到信息。

//注册和移除需要确定在哪个⽣命周期进⾏
//注册
EventBus.getDefault().register(this);
//移除
EventBus.getDefault().removeAllStickyEvents();
EventBus.getDefault().unregister(this);
//事件处理:
//threadMode有四种类型(MAIN、POSTING、BACKGROUND、AYSNC)
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void MessageEventBus(MessageEvent event) {
tvEventbusResult.setText(event.toString());
}
3.发送事件
//发送普通事件
EventBus.getDefault().post(new MessageEvent("普通事件"));
//发送粘性事件
EventBus.getDefault().postSticky(new MessageEvent("粘性事件"));
EventBus原理
EventBus运⽤注解和反射技术,发布/订阅模式、单例模式,通过⼀系列的操作,实现消息的发送和接收(具体见EventBus源码)
思考:
结合github上EventBus的介绍,和⼀些具体介绍EventBus使⽤的博客,并进⾏⼀定的编码测试,可以做到对EventBus的初步了解和使⽤。

深⼊了解的话,还是要结合源码,⼀点点分析其设计思想和使⽤到的语⾔相关技术和设计模式等。

知其然易,知其所以然难。

--End。

相关文档
最新文档