前言:什么是EventBus
EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络
返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
一:EventBus框架
大家谈到EventBus,总会想到greenrobot的EventBus,但是实际上EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多。用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是限定了方法名,不支持注解。另一个库square/otto修改自 Guava ,用的人也不少。
二:基本用法
很多文章会讲到Subscriber,以及Publisher和ThreadMode等概念,我觉得暂时没有必要,简单粗暴,直接上代码:
1.添加依赖库:
首先你要为你的app添加依赖库:
compile 'de.greenrobot:eventbus:3.0.0-beta1'
2.在需要的Activity或者Fragment注册EventBus
//注册EventBus
EventBus.getDefault().register(this)
3.在注册的Activity或者Fragment界面取消注册和订阅及回调
//取消订阅
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
/**
* 回调消息
*
* @param messageEvent
*/
@Subscribe(threadMode = ThreadMode.PostThread)
public void getmessage(final MessageEventWcqh messageEvent) {
System.out.println("收到的消息:" + messageEvent.getMessage());
}
4.在操作界面发布
//发布EventBus
MessageEventWcqh eventBusIs=new MessageEventWcqh ("1");
EventBus.getDefault().post(eventBusIs);
5.自定义一个类似pojo的类
/**
* 作者:CaoLiulang
* ❤
* Date:2017/5/12
* ❤
* 模块:EventBus
*/
public class MessageEventWcqh {
public String message;
public EventBusIs(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
-----------------------到这相信你对EventBus有所掌握,不喜勿喷、