EventBus的使用
Android APP当中可以用于传递消息的有广播、Intent、Handle等,使用EventBus可以取代它们的一些功能,而且使得代码非常的简明优雅。
导入EventBus的包之后,便可以使用了,使用方法如下
发送消息
Object obj = new Object()
EventBus.getDefault().post(obj);
接收消息的类需要先注册,当类销毁时,要进行注销。一般接收消息都是Activity类,所以都在onCreate函数当中进行注册,在Ondestroy函数当中注销
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EventBus.getDefault().register(this);
}@Override
protected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);
}
接收有四个函数可供选择,他们的差异如下所示
//发布事件和接受事件在同一个线程,避免做复杂耗时的操作public void onEvent(Object obj){System.out.println("do something");}//接收事件在UI线程当中执行,可以修改UI界面public void onEventMainThread(Object obj){System.out.println("do something");}//如果发送事件从UI事件当中发出,则接收事件在子线程当中执行//如果发送事件本身就是从子线程当中发出,则接收事件和发送事件在同一线程当中public void onEventBackground(Object obj){System.out.println("do something");}//新建子线程接收public void onEventAsync(Object obj){System.out.println("do something");}
EventBus是根据参数进行识别发送的,比如post(A a),那么接收的时候会判断参数是否是类A,如果是才会发送到这个接收函数。
EventBus是典型的观察者模式,EventBus是消息发送者,而其他注册的类属于消息订阅者。其内部会根据订阅者的接收类型进行分发。
EventBus源码地址:https://github.com/greenrobot/EventBus
转载于:https://www.cnblogs.com/huangbei1990/p/5869587.html
EventBus的使用相关推荐
- EventBus的粘性事件原理
EventBus也称事件总线,根据发送事件的类型分为普通事件和粘性事件. 粘性事件的用法: 1.订阅的时候加上sticky = true @Subscribe(threadMode = ThreadM ...
- Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.baidu.iov.dueros.film.ui
这个错误是EventBus 包的错误 指向了EventBus.getDefault().register(this); 处理这个错误到EventBus 接受的地方 1 看看接受值是否写了 2 @Su ...
- EventBus的使用(一看就懂)
今天使用EventBus 遇到一个小bug ,这里记录下其使用 先啰嗦一下,这边博客是说怎样使用的,没有涉及到什么原理,在看之前,你或许百度了很多博客 都是MainActivity 接受消息,Seco ...
- Android中的eventBus传值
第一步:在build.gradle中添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'} 第二步:创建一个 Event类: 注意:en ...
- EventBus设计之禅
前言 笔者看过一些知名开源项目的源码,认为 EventBus 算是其中最简单的,甚至复杂程度不在一个级别上.解析源码前先提一下以下几个变量和类,掌握了这些变量和类基本上 EventBus 已经就掌握一 ...
- 【转】EventBus 3.0使用详解
原文:https://www.jianshu.com/p/f9ae5691e1bb 01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数 ...
- Android框架之路——EventBus的使用
一.简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架.EventBus是一个Android端优化的publish/subscribe消息总线,简化了 ...
- EventBus源码解析
前面一篇文章讲解了EventBus的使用,但是作为开发人员,不能只停留在仅仅会用的层面上,我们还需要弄清楚它的内部实现原理.所以本篇博文将分析EventBus的源码,看看究竟它是如何实现"发 ...
- Android 源码分析之 EventBus 的源码解析
1.EventBus 的使用 1.1 EventBus 简介 EventBus 是一款用于 Android 的事件发布-订阅总线,由 GreenRobot 开发,Gihub 地址是:EventBus. ...
- EventBus简单分析
2019独角兽企业重金招聘Python工程师标准>>> 当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消 ...
最新文章
- [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
- oracle存储过程多分支怎样写,如何写一个分段提交的存储过程啊
- java http 压缩_解压HTTP API的GZIP压缩数据
- Fliptile——搜索+二进制优化
- 在codeigniter中使用Cache_Lite来缓存
- 习题3.3 线性表元素的区间删除 (20 分)
- C#使用SmtpClient发送邮件解决授权码配置问题
- Oracle EBS学习网站列表
- Q88:全局光照(Global Illumination)——Path Tracing算法生成反射焦散效果的图形
- vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload
- 多语言在线翻译工具Translatium for Mac
- 拓端tecdat|新零售消费者特征的数据视野
- 2020-11-30 OpenCV人工智能图像处理学习笔记 第4章 计算机视觉加强之图像特效
- STM32串行驱动LCD12864显示屏程序代码
- 【Microsoft Azure 的1024种玩法】二十八. 基于Azure Cloud搭建IPS入侵防御系统实现安全流量实时分析
- 【软件工程系列】结构化需求分析
- 什么是网络智能运维?如何保障业务7x24小时在线?
- 隔空投送教程|如何将文件从iPhone或iPad空投到Mac计算机?
- java学习(二)——类与对象
- 程序员从初级到中级10个秘诀
热门文章
- asp与php对比,个人看法 zblogasp和zblogphp的对比
- 如何给小朋友解释单摆运动_模仿小天才钟美美:小朋友都是天生的演员?
- druid连接池以及数据源了解
- java 实现nfa的化简_NFA的实现
- jq封装接口ajax,jquery ajax方法封装及api文件设计的代码示例
- oracle不弹出另存为,Oracle另存为~
- 计算机内存插在主板的哪个槽,四个内存插槽,这是正确的安装顺序
- 微信找不到nfc功能_手机的NFC如何使用?3分钟教会你!
- servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
- mysql varchar转bigint_MySQL 每秒 570000 的写入,如何实现?