呃,要跟上时代的步伐,所以来学习一下EventBus(话说好像现在学也已经算是跟不上了。。嘛。。不管了,一步一步往前追,应该还来得及吧)。

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

看了网上一些的关于eventBus的文章,上来就叽里呱啦一大堆总结啊,概述啊。。上个原理图啊什么的。。 这样写虽然好,但是总会给一些初学者打一些退堂鼓。看到那么复杂就不想看下去了。。 所以在自己学习的过程中,想写一些直观的,精简的,适合初学者的博客。

现在开始吧

关于EventBus是什么

额。。因为笔者也是刚刚接触,所以暂时我们认为他是用来传递消息的东东(类似于handler啊 intent啊等等)。这样也比较好理解。 暂时撇开观察者模式不说,直接来看他的用法。

首先将EventBus整合到我们自己的项目中

1.在gradle里面,加入如下代码,这样即可在项目中使用EventBus


dependencies {
compile 'de.greenrobot:eventbus:2.4.0'
}

如何使用

  1. 在MainActivity的onCreate()周期注册EventBus。
EventBus.getDefault().register(this);
  1. 在onDestroy()注销EventBus。
  @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}

这样便完成了一个EventBus的注册。现在,给Activity安上一个按钮,用这个按钮来发送消息,弹出一个Toast。

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.btn);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post("hello eventBus");
}
});
EventBus.getDefault().register(this);
}

此时,点击button,将会通过EventBus发送一条消息。然后来写一个onEventMainThread函数,去处理这个消息的接收。这个函数代表如果接收到消息,则运行在UI线程。里面去弹出一条Toast,为刚才发送的消息。

public void onEventMainThread(String str) {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}

此时,点击按钮,效果如下:

具体的流程是: 按钮触发监听事件—->EventBus发送消息—->EventBus接收消息—->处理接收到的消息

这样应该大家可以很直观的了解了EventBus的作用,这也算是第一课时的笔记吧~

下一篇: EventBus的常用函数

大家如果喜欢我的博客,记得关注我哦。

EventBus 最简易的使用方式的更多相关文章

  1. 简易的解决方式linker command failed with exit code 1 (use -v to see invocation)

    linker command failed with exit code 1 (use -v to see invocation) 遇到这个问题先不要慌,不用纠结是不是自己改动了什么代码导致的. 长话 ...

  2. EventBus的其他常用函数

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

  3. HBase 实战(1)--HBase的数据导入方式

    前言: 作为Hadoop生态系统中重要的一员, HBase作为分布式列式存储, 在线实时处理的特性, 备受瞩目, 将来能在很多应用场景, 取代传统关系型数据库的江湖地位. 本篇博文重点讲解HBase的 ...

  4. EventBus VS Spring Event

    EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Gua ...

  5. 安卓高级EventBus使用详解

    我本来想写但是在网上看了下感觉写得不如此作者写得好:http://www.jianshu.com/p/da9e193e8b03 前言:EventBus出来已经有一段时间了,github上面也有很多开源 ...

  6. Guava源码解析之EventBus

    最近看Elastic-Job源码,看到它里面实现的任务运行轨迹的持久化,使用的是Guava的AsyncEventBus,一个内存级别的异步事件总线服务,实现了简单的生产-消费者模式,从而在不影响任务执 ...

  7. (转载)EventBus使用详解

    (转载)http://liuling123.com/2016/01/EventBus-explain.html 概述 EventBus是针一款对Android的发布/订阅事件总线.它可以让我们很轻松的 ...

  8. 教你快速写一个EventBus框架

    前言EventBus相信大多数人都用过,其具有方便灵活.解耦性强.体积小.简单易用等优点,虽然现在也有很多优秀的替代方案如RxBus.LiveDataBus等,但不可否认EventBus开创了消息总线 ...

  9. CSS BEM 命名方式

    简介 简易 css 命名方式,减小命名冲突,使得 css 更有组织感和识别感.但如今写 react 项目大多可以忽略对 css 的命名约束了. 官网介绍:http://getbem.com/intro ...

随机推荐

  1. MySQL 字符串截取SUBSTRING()函数

    MySQL 字符串截取相关函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例: select left(content,200) as ab ...

  2. proc文件系统探索 之 以数字命名的目录

    在proc根目录下,以数字命名的目录表示当前一个运行的进程,目录名即为进程的pid.其内的目录和文件给出了一些关于该进程的信息. niutao@niutao-desktop:/proc/6584$ l ...

  3. PGM:部分观测数据

    http://blog.csdn.net/pipisorry/article/details/52599451 基础知识 数据缺失的三种情形: 数据的似然和观测模型 Note: MLE中是将联合概率P ...

  4. 剑指Offer——如何做好自我介绍

    剑指Offer--如何做好自我介绍 前言 自我特点+经历梳理   各位老师好,我叫某某某,XX人.研究生三年级,就读于某某大学信息科学与工程学院软件工程专业.主要使用的开发语言是Java,熟悉基本数据 ...

  5. Spark技术内幕:Shuffle Read的整体流程

    回忆一下,每个Stage的上边界,要么需要从外部存储读取数据,要么需要读取上一个Stage的输出:而下边界,要么是需要写入本地文件系统(需要Shuffle),以供childStage读取,要么是最后一 ...

  6. Android必知必会-长按返回健退出

    背景 平常比较常见的都是一定时间间隔内按两次返回键来退出应用,并且第一次点击会有相应的提示,网上资料比较多,这里写一下,长按返回键退出. 实现 实现的方案常用的有两个: 重写dispatchKeyEv ...

  7. java之异常处理

    异常Exception我们分为 |--RuntimeException运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 异常有两种处理 ...

  8. Volley的基本使用

    Volley的基本使用 导入jar包 导入成功 源码 GET请求下载地址:http://download.csdn.net/detail/q4878802/9053969 POST请求下载地址:htt ...

  9. ubuntu mysql表名大小写区分

    近期开发线上操作系统用的ubuntu,数据库用的mysql,突然发现mysql表名大写报错,找一下原因,看了下mysql的配置,果真可以设置,窃喜. 先找到你MySQL的my.cnf配置文件并修改,当 ...

  10. iOS开发之使用block块进行数据遍历的方法

    看了一篇文章,发现遍历数组.字典中的数据时,除了使用for循环外,还可以使用block块进行操作,瞬间感觉iOS的语言代码确实有点高大上的感觉,下面就简单的介绍一下这个方法. 首先是最基本的运用形式, ...