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的使用相关推荐

  1. EventBus的粘性事件原理

    EventBus也称事件总线,根据发送事件的类型分为普通事件和粘性事件. 粘性事件的用法: 1.订阅的时候加上sticky = true @Subscribe(threadMode = ThreadM ...

  2. Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.baidu.iov.dueros.film.ui

    这个错误是EventBus 包的错误 指向了EventBus.getDefault().register(this); 处理这个错误到EventBus 接受的地方 1 看看接受值是否写了 2  @Su ...

  3. EventBus的使用(一看就懂)

    今天使用EventBus 遇到一个小bug ,这里记录下其使用 先啰嗦一下,这边博客是说怎样使用的,没有涉及到什么原理,在看之前,你或许百度了很多博客 都是MainActivity 接受消息,Seco ...

  4. Android中的eventBus传值

    第一步:在build.gradle中添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'} 第二步:创建一个 Event类: 注意:en ...

  5. EventBus设计之禅

    前言 笔者看过一些知名开源项目的源码,认为 EventBus 算是其中最简单的,甚至复杂程度不在一个级别上.解析源码前先提一下以下几个变量和类,掌握了这些变量和类基本上 EventBus 已经就掌握一 ...

  6. 【转】EventBus 3.0使用详解

    原文:https://www.jianshu.com/p/f9ae5691e1bb 01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数 ...

  7. Android框架之路——EventBus的使用

    一.简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架.EventBus是一个Android端优化的publish/subscribe消息总线,简化了 ...

  8. EventBus源码解析

    前面一篇文章讲解了EventBus的使用,但是作为开发人员,不能只停留在仅仅会用的层面上,我们还需要弄清楚它的内部实现原理.所以本篇博文将分析EventBus的源码,看看究竟它是如何实现"发 ...

  9. Android 源码分析之 EventBus 的源码解析

    1.EventBus 的使用 1.1 EventBus 简介 EventBus 是一款用于 Android 的事件发布-订阅总线,由 GreenRobot 开发,Gihub 地址是:EventBus. ...

  10. EventBus简单分析

    2019独角兽企业重金招聘Python工程师标准>>> 当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消 ...

最新文章

  1. [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
  2. oracle存储过程多分支怎样写,如何写一个分段提交的存储过程啊
  3. java http 压缩_解压HTTP API的GZIP压缩数据
  4. Fliptile——搜索+二进制优化
  5. 在codeigniter中使用Cache_Lite来缓存
  6. 习题3.3 线性表元素的区间删除 (20 分)
  7. C#使用SmtpClient发送邮件解决授权码配置问题
  8. Oracle EBS学习网站列表
  9. Q88:全局光照(Global Illumination)——Path Tracing算法生成反射焦散效果的图形
  10. vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload
  11. 多语言在线翻译工具Translatium for Mac
  12. 拓端tecdat|新零售消费者特征的数据视野
  13. 2020-11-30 OpenCV人工智能图像处理学习笔记 第4章 计算机视觉加强之图像特效
  14. STM32串行驱动LCD12864显示屏程序代码
  15. 【Microsoft Azure 的1024种玩法】二十八. 基于Azure Cloud搭建IPS入侵防御系统实现安全流量实时分析
  16. 【软件工程系列】结构化需求分析
  17. 什么是网络智能运维?如何保障业务7x24小时在线?
  18. 隔空投送教程|如何将文件从iPhone或iPad空投到Mac计算机?
  19. java学习(二)——类与对象
  20. 程序员从初级到中级10个秘诀

热门文章

  1. asp与php对比,个人看法 zblogasp和zblogphp的对比
  2. 如何给小朋友解释单摆运动_模仿小天才钟美美:小朋友都是天生的演员?
  3. druid连接池以及数据源了解
  4. java 实现nfa的化简_NFA的实现
  5. jq封装接口ajax,jquery ajax方法封装及api文件设计的代码示例
  6. oracle不弹出另存为,Oracle另存为~
  7. 计算机内存插在主板的哪个槽,四个内存插槽,这是正确的安装顺序
  8. 微信找不到nfc功能_手机的NFC如何使用?3分钟教会你!
  9. servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
  10. mysql varchar转bigint_MySQL 每秒 570000 的写入,如何实现?