简介
我们使用一个框架或者控件,首先需要知道他的作用,有什么优势。Eventbus3.0这说白了就是一个事件发布和订阅的框架。直白点说就是一边发送消息,或数据,另外一边接收消息或数据。它发送消息和接收消息的代码十分的简洁,用起来十分的简单。
先说下使用的代码吧
这里看不懂不要着急在下面有详解哦!
导入框架
在安卓studio的build文件下加入
compile’org.greenrobot:eventbus:3.0.0’
一、注册
//注册
EventBus.getDefault().register(this);
二、取消注册
@Override
protected void onDestroy() {
super.onDestroy();
//取消注册
EventBus.getDefault().unregister(this);
}
三、发布
//直接发布,接收对象
EventBus.getDefault().post("发布");
//滞留发布
EventBus.getDefault().postSticky("滞留发布");
四、订阅处理数据
/*
*UserEvent需要自己定义
*/
//在ui线程执行
@Subscribe(threadMode = ThreadMode.MainThread)
public void onUserEvent(UserEvent event) {
}
//在后台线程执行
@Subscribe(threadMode = ThreadMode.BackgroundThread)
public void onUserEvent(UserEvent event) {
string a= event.getText();//这就是接收的数据
}
//强制在后台执行
@Subscribe(threadMode = ThreadMode.Async)
public void onUserEvent(UserEvent event) {
string a= event.getText();
}
//默认方式, 在发送线程执行
@Subscribe(threadMode = ThreadMode.PostThread)
public void onUserEvent(UserEvent event) {
string a= event.getText();
}
总结下
eventbus的使用就差不多是这个样子了,这些代码直接复制粘贴进去就好了,但是我刚接触的时候感觉怪怪的,就是在订阅处理数据的时候我一直有个疑问,这个方法不是没有调用吗?他是怎么回事啊?原来订阅的方法不需要调用,这这个类里面注册了然后收到了数据就直接会走到订阅的方法里面:@Subscribe(threadMode = ThreadMode.MainThread) 这个就是接受的标识。然后UserEvent 是什么东西呢?相信大家没有看懂,这个是自己定义的一个类
/**
* 实体类
*/
public class UserEvent {
/**
* 这里你传递什么类型你就写什么类型
*/
//文本
private String text;
public UserEvent (String text) {
this.text=text;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
在发布的时候
EventBus.getDefault().post(new UserEvent("我是消息"));
当订阅者的类中订阅了,也就是register就能接受到发送者发送的消息。