一 引入方法

可以去github的官网中下载EventBus的相关资源  地址:https://github.com/greenrobot/EventBus

当然还有他的官方网站 http://greenrobot.org/eventbus/

 Eclipse用户需要下载其jar包;AndroidStudio用户 可以在 build.gradle直接添加引用

compile 'org.greenrobot:eventbus:3.0.0'

 

二  使用

1:在监听者的Activity或者Fragment或者其他地方注册及解除事件的绑定

主要是通过使用EventBus,使Fragment之间的通信可以写的非常简洁易懂

  @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**创建界面时订阅事件,接收消息*/
EventBus.getDefault().register(this);
} @Override
public void onDestroy() {
super.onDestroy();
/**界面销毁时,取消订阅*/
EventBus.getDefault().unregister(this);
}

  因为EventBus使用的是单例模式,所以可以实现一句话实现注册和取消注册;也可以通过Builder来自己创建;

以上完成后就相当于注册了本界面接受消息,这样你在其他地方发消息时就可以通知本界面(是比Handler好用)

2:写传送Message POJO(Plain Ordinary Java Object)简单的Java对象

public class MsgEvent1 {
private String msg; public MsgEvent1(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
}

2:写监听方法

这个监听方法名字你可以自己取,但是得写上@Subscribe 注解,且形参必须要和传送过来的参数类型一致;

那么既然名字能随意去取,怎么能控制运行的线程呢,答案就是在注解中控制 @Subscribe(threadMode = ThreadMode.MAIN)

需要设置ThreadMode即可

  @Subscribe
public void onEvent(MsgEvent1 msg){
String content = msg.getMsg()
+ "\n ThreadName: " + Thread.currentThread().getName()
+ "\n ThreadId: " + Thread.currentThread().getId();
System.out.println("onEvent(MsgEvent1 msg)收到" + content);
tv.setText(content);
}

3:在任何地方发送消息

且只需要一句话就行

EventBus.getDefault().post(new MsgEvent1("Fuck World!!));
这样EventBus使用就完成了 有几个注意的地方
1:哪个监听者会作出相应这要看你post的类型!!
2:监听方法注意加@Subscribe注释,否则会报错:
Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.example.XXXXXX and its super classes have no public methods with the @Subscribe annotation
3:监听方法为Public方法

EventBus 3.0使用相关的更多相关文章

  1. Android消息传递之EventBus 3.0使用详解

    前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...

  2. Android EventBus 3.0 实例使用详解

    EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...

  3. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...

  4. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  5. Android EventBus 3.0.0 使用总结

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6039221.html 本文出自[赵彦军的博客] 前言 EventBus框架 EventBus是一个通用的叫法 ...

  6. EventBus 3.0使用

    在没用eventBus之前一直用Android广播方式通知消息更新UI 广播写法 首先发送广播通知 Intent intent = new Intent(); intent.setAction(&qu ...

  7. EventBus 3.0使用详解

    01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,而两个Fragment之家 ...

  8. EventBus 3.0源码解析

    现在网上讲解EventBus的文章大多数都是针对2.x版本的,比较老旧,本篇文章希望可以给大家在新版本上面带来帮助. EventBus 是专门为Android设计的用于订阅,发布总线的库,用到这个库的 ...

  9. 【转】EventBus 3.0使用详解

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

随机推荐

  1. c++string,常见用法总结

    #include<iostream> #include<string> using namespace std; int main() { //创建对象,及初始化 string ...

  2. linux下如何调试Makefile?

    答:make --debug=all (输出所有的调试信息)

  3. vs2015 + Python3.5 环境搭建

    1. vs2015只支持Python3.5及以前的版本,对应Anaconda3.4.2之前的版本. 2. 卸载掉所有安装过的Python 3. 建议重装VS2015, 因为增量升级Python Too ...

  4. Nand flash code

    (1)流水灯   1>我们来看原理图                                2>datasheet                             3> ...

  5. SPOJ 839 Optimal Marks(最小割的应用)

    https://vjudge.net/problem/SPOJ-OPTM 题意: 给出一个无向图G,每个点 v 以一个有界非负整数 lv 作为标号,每条边e=(u,v)的权w定义为该边的两个端点的标号 ...

  6. Oracle DBHelper 第二版

    public static class OracleDBHelper { public static OracleCommand cmd = null; public static OracleCon ...

  7. 【Oracle】【问题】

    1. java.sql.SQLException: 对只转发结果集的无效操作: last 参考:https://www.cnblogs.com/gaoyuchuanIT/articles/411888 ...

  8. Vue--vux组件库

    各种组件demo源码~ https://doc.vux.li/zh-CN/

  9. async、await在ASP.NET[ MVC]中之线程死锁的故事

    场景重构 public ActionResult Index(string ucode) { string userInfo = GetUserInfo(ucode).Result; ViewData ...

  10. Windows下及Mac下的IntelliJ IDEA快捷键

    Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == De ...