一 引入方法

可以去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. Restful framework【第八篇】频率组件

    基本使用 频率: -限制每个ip地址一分钟访问10次 -写一个类 from rest_framework.throttling import SimpleRateThrottle class Visi ...

  2. hihoCoder week23 最短路径·一

    spfa 最短路 #include <bits/stdc++.h> using namespace std; #define pb push_back #define INF 1e16; ...

  3. java 偏向锁,轻量锁,重量级锁

    synchronized的执行过程: 1. 检测Mark Word里面是不是当前线程的ID,如果是,表示当前线程处于偏向锁 2. 如果不是,则使用CAS将当前线程的ID替换Mard Word,如果成功 ...

  4. 【C#】非常重要的泛型

    泛型 为什么要有泛型, 在没有泛型之前, 什么东西充当了泛型的作用? 在泛型出现之前, 代码中会有很多需要强制转换的地方. 比如 int a = (int) object, 对于这样类似的代码, 编译 ...

  5. springmvc上传zip文件并解压缩代码示例

    <input type="file"  id="file"  name="file"> spring中的配置: <!-- ...

  6. 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html

    #网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...

  7. progressBar显示百分比

    this.lab_AllFiles.Text = progressBarAllFile.Value * 100 / progressBarAllFile.Maximum + "%" ...

  8. 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创

    小蚂蚁说: 11月8日,在第五届世界互联网大会-<人工智能:融合发展新机遇>论坛上,蚂蚁金服副总裁.首席数据科学家漆远认为AI具有控制风险.降本增效和提升用户体验三大作用. 11月8日,第 ...

  9. C++图形开发相关

    1. WxWidgets 2. GTK+ 3. U++ Framework 4. QT

  10. 解決 Android Studio 不停 Indexing 的問題(Updating Indices: Indexing paused due to batch update)

    遇到這個問題通常是 IDE 更新後,或是反覆使用 Android Studio 開啟其他專案所導致,解決方法其實非常簡單喔! 点击 這個選項的功用是「清除 IDE 暫存並重啟」,沒錯,會出現上述情形的 ...