上一篇EventBus最简易使用方式介绍了EventBus最简易的使用方式,摆脱了叽里呱啦+图片的长篇大论。目的是为了让刚开始接触的人们不晕头转向。那么这篇。。我也要开始图片+叽里呱啦了。

转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50628011

怎么才能了解EventBus呢。。当然是直接看github上的README了。

首先,是github上的描述

Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.

意思为:安卓平台上一个用于Activity,Fragment,Thread,Service被优化简化的通讯协议。 加量不加价(少代码,高质量)!

这个…… 呃~~ -__-” 说的很明白了。

  • 再来看readme

    发现一张图片:

描述了发布者和订阅者的关系。即:一个发布者 发布事件到总线,总线分发给订阅者。

EventBus…

simplifies the communication between components

decouples event senders and receivers

performs well with Activities, Fragments, and background threads

avoids complex and error-prone dependencies and life cycle issues

makes your code simpler

is fast

is tiny (<50k jar)

is proven in practice by apps with 100,000,000+ installs

has advanced features like delivery threads, subscriber priorities, etc.

妈蛋,最讨厌看英文了,反正叽里呱啦一大堆,用我们博大精深的中文来概括就是:EventBus:短、小、快!

关于EventBus的方法

  • 注册和注销这里就不说了,这里首先说说他的post方法

昨天我给出的使用示例是:

 EventBus.getDefault().post("hello Eventbus");

其实我们可以自己定制消息类型,如

public class MessageEvent {
public final String message; public MessageEvent(String message) {
this.message = message;
}
}

然后将它发送出去:

  EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

其实和handler很像了有木有~~ 有了这样定制消息的功能,我们就可以个性化消息,来对消息进行分类啊等等工作。

PostThread

是说该方法将会在同一个线程来调用,避免了线程之间的切换,比如你是在主线程发送的消息,那么将会运行在主线程,如果为其他线程,那么将在其他线程调用。

// 在相同线程里调用 (默认)
public void onEvent(MessageEvent event) {
log(event.message);
}

MainThread

将会在主线程调用,如果本身就在主线程,将直接调用

// 在主线程(UI线程)调用
public void onEventMainThread(MessageEvent event) {
//进行UI操作
textField.setText(event.message);
}

BackgroundThread

将会在工作线程(后台线程)调用

  // 在后台线程调用
public void onEventBackgroundThread(MessageEvent event){
//进行耗时操作
saveToDisk(event.message);
}

额。。关于EventBus的常用函数就是这些了。 EventBus的优点到底是什么? 我觉得就是短小快吧 哈哈哈啊哈哈哈哈哈

关于EventBus的缺点

因为他是通过反射来获取方法名的。所以如果方法被混淆的话。。就不会起作用了。。这是EventBus最大的缺点之一。

如果你喜欢我的博客 请关注我。

EventBus的其他常用函数的更多相关文章

  1. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  2. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  3. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  4. PHP常用函数、数组方法

    常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...

  5. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  6. Thinkcmf:页面常用函数

    Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title}        <!--SEO标题--> {$site_seo_keywords}   < ...

  7. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  8. iOS导航控制器常用函数与navigationBar常用属性

    导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...

  9. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

随机推荐

  1. Java实验链接

    第1次实验 课堂实验内容:Java入门+Eclipse+PTA+Git+博客 实验任务书:第01次试验(安装JDK.编辑器.编写出第一个Java程序).pdf Eclipse简明教程(by郑如滨).p ...

  2. Scroll Segmented Control(Swift)

    今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...

  3. 建立自己的git服务器

    需求情景 就像金山快盘同步盘那样, 在开发环境windows 10和部署环境Ubuntu server 14.04之间建立同步关系.比如windows端多了一个a.txt文件,你推送后,Ubuntu端 ...

  4. Bootstrap3 栅格系统-列偏移

    使用 .col-md-offset-* 类可以将列向右侧偏移.这些类实际是通过使用 * 选择器为当前元素增加了左侧的边距(margin).例如,.col-md-offset-4 类将 .col-md- ...

  5. Vulkan API基本概念

    设备初始化 Instance --> GPU --> Device Instance表示具体的Vulkan应用.在一个应用程序中可以创建多个实例,这些实例之间相互独立,互不干扰. 当调用A ...

  6. 20160211.CCPP体系详解(0021天)

    程序片段(01):01.指针数组.c+02.动态数组.c 内容概要:指针数组 ///01.指针数组.c #include <stdio.h> #include <stdlib.h&g ...

  7. [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

    继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...

  8. 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误

    我们做 iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像 T ...

  9. 2.3、Android Studio使用Layout Editor设计UI

    Android Studio提供了一个高级的布局编辑器,允许你拖拽控件,在编辑XML之后可以实时预览. 在布局编辑器中,你在文字视图和设计视图直接来回切换. 在文字视图中编辑 你可以在文字视图中编辑你 ...

  10. dbcp连接池不合理的锁导致连接耗尽

    应用报错,表象来看是连接池爆满了. org.springframework.transaction.CannotCreateTransactionException: Could not open J ...