EventBus 3.0 的基本使用
EventBus 3.0 的基本使用
1.什么是EventBus?
EventBus 是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
2.使用EventBus有什么好处?
采用消息发布/订阅的一个很大的优点就是代码的简洁性,并且能够有效地降低消息发布者和订阅者之间的耦合度。
3.EventBus 3.0 的使用
- 在 AndroidStudio中添加依赖:
compile ‘org.greenrobot:eventbus:3.0.0’
2.注册和注销
你需要在一个Activity或者Fragment中注册eventbus事件,然后定义接收方法,这和Android的广播机制很像,你需要首先注册广播,然后需要编写内部类,实现接收广播,然后操作UI,在EventBus中,你同样需要这么做。比如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
3.定义事件
Event 大专栏 EventBus 3.0 的基本使用s 就是一个普通的JavaBean,没有任何特殊要求,例如:
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
}
4.订阅者
准备subcriber的回调method,来处理post event,从EventBus 3.0 开始,用注解@Subscribe来定义subscriber的回调method,方法名可以任意定义。
例如:
@Subscribe(threadMode = ThreadMode.POSTING)
public void onMessageEvent(MessageEvent event) {
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
在这个方法上面添加 @Subscribe 注解,同时这里可以添加threadMode参数决定onMessageEventBus方法执行在什么线程上面,这里的参数分为:
POSTING –与消息发送者在同一线程(默认)
MAIN –执行在主线程
BACKGROUND –执行在一个后台线程,会优先寻找发送者的线程,如果发送者执行在主线程,那么就新建一个后台线程
ASYNC –执行在一个新的后台线程中
5.发布者
前面准备好,这里就可以任意post event。所有已注册EventBus的subscriber只要event_type相匹配,都可以收到该event。
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
使用篇就到这里,之后会继续写原理分析。
最新文章
- Python Iterable Iterator Yield
- pod install后无反应
- perspective属性
- dll 打包
- SQL Server 2008空间数据应用系列一:空间信息基础
- Java RMI 入门案例
- utf8_general_ci 、utf8_general_cs和utf8_bin的区别
- Python学习笔记——基础篇【第五周】——正则表达式(re)
- JDBC连接SQL Server 2005步骤详解
- C#继承的执行顺序
- 为 Debian 8 或 Debian 9(64 位)安装 .NET Core
- PHP截取日期
- 跨平台移动APP开发进阶(三)hbuilder+mui mobile app 开发心酸路
- python 单例模式的四种实现方法及注意事项
- Oracle时间与系统不同步,TimeStampService
- March 02nd, 2018 Week 9th Friday
- javascript 回调函数定义 模板
- Java并发之线程转储
- git排错
- GsonFormat的使用 (转)