EventBus的初步使用
来源:互联网 发布:type3软件下载 编辑:程序博客网 时间:2024/05/22 13:23
今天就关于关系事件的消息传递中的问题写这篇文章,首先我们先来了解一下几种事件传递的方式。
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据。。。)
我经常看到EventBus被作为一种通用模式应用在Android开发中。Otto和EventBus这样的类库经常被用来省去编写不同层之间来封装代码的模板类。尽管EventBus刚开始看起来的确带来了方便,但是很快这些纠缠的事件会被弄成一堆乱麻,很难跟踪更别说调试。EventBus通常被宣扬可以降低模块之间的耦合度,但是,事实上带给你的是降低耦合度带来的混乱和困惑。RxJava要比EventBus的应用更广泛,EventBus仅仅是作为一种消息的传递工具,但是RxJava里面几乎可以做任何事情。但有一个严重的问题就是上手非常的不容易。所以今天这篇文章也是为了简单介绍这两者的区别,先学习更容易上手的EventBus,之后如果有时间的话可以专心研究RxJava和RxAndroid的搭配使用。
第一步、
1、下载EventBus的类库
源码:https://github.com/greenrobot/EventBus
2、创建一个自定义的类,并且构造时传进去一个字符串,然后可以通过getMsg()获取出来。
public class HeadImgEvent { private String mMsg; public HeadImgEvent(String msg) { mMsg = msg; } public String getMsg() { return mMsg; }}
3、在要接收消息的页面注册和解除注册
@Override public void initViews() { // 注册EventBus EventBus.getDefault().register(this); } @Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }
4、在需要发消息的地方写发送消息的代码
//eventBus.post(new AnyEventType event);
EventBus.getDefault().post(new HeadImgEvent(“新消息”));
5,在需要接受消息的地方重新接受方法
接收消息时,我们使用EventBus中最常用的onEventMainThread()函数来接收消息,具体为什么用这个,我们下次再讲,这里先给大家一个初步认识,要先能把EventBus用起来先。
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(HeadImgEvent event) { Toast.makeText(this, event.getMsg()+"",Toast.LENGTH_SHORT).show(); }
在以上代码中我们重写了@Subscribe(threadMode = ThreadMode.MAIN)。这里说名字该消息是在主线程中接受的,所以可以做更新UI的操作,在这里接受消息时需要注意的问题就是这个。当然了,根据EventBus类库版本的不同可能它的写法也会不同吗,所以在这里需要特别注意。如果到了这里你的EventBus还没用起来的话那就需要好好检查一下了,是不是很简单。改天我们再说一下EventBus的几个函数,以及各个函数之间的关系。
- EventBus的初步使用:
- EventBus的初步使用
- Eventbus的初步使用
- Android EventBus的初步使用
- Android EventBus的初步使用
- EventBus的使用详解(一)--初步使用EventBus
- EventBus的使用详解(一)--初步使用EventBus
- Android studio 上 EventBus的初步使用
- EventBus使用初步
- EventBus(初步使用)
- 初步使用EventBus (一)
- 初步使用EventBus
- eventbus 初步使用
- EventBus初步使用
- EventBus的初步接触
- EventBus使用详解(一)初步
- EventBus使用详解(一)——初步使用EventBus
- EventBus使用详解(一)——初步使用EventBus
- 背景颜色转为UIImage
- performSelector系列方法编译器警告-Warc-performSelector-leaks
- AFNetworking解析(三)
- BestCoder 2nd Anniversary A,B,C解题报告
- 无名管道总结
- EventBus的初步使用
- 404请求错误 location.href
- 欢迎使用CSDN-markdown编辑器
- 【EHCache】EHCache技术文档-下载地址
- 杭电 1863 最小生成数
- JAVA循环的一些问题和创建对象的问题解答
- 【spring 5】AOP:spring中对于AOP的的实现
- static 常量区 数据区 堆栈 生命周期 作用域 c++ 以及脚本语言的区别
- deepin安装vsftpd(仅安装篇)