EventBus 3.0使用相关
一 引入方法
可以去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使用相关的更多相关文章
- Android消息传递之EventBus 3.0使用详解
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...
- 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~
一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...
- Android EventBus 3.0.0 使用总结
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6039221.html 本文出自[赵彦军的博客] 前言 EventBus框架 EventBus是一个通用的叫法 ...
- EventBus 3.0使用
在没用eventBus之前一直用Android广播方式通知消息更新UI 广播写法 首先发送广播通知 Intent intent = new Intent(); intent.setAction(&qu ...
- EventBus 3.0使用详解
01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,而两个Fragment之家 ...
- EventBus 3.0源码解析
现在网上讲解EventBus的文章大多数都是针对2.x版本的,比较老旧,本篇文章希望可以给大家在新版本上面带来帮助. EventBus 是专门为Android设计的用于订阅,发布总线的库,用到这个库的 ...
- 【转】EventBus 3.0使用详解
原文:https://www.jianshu.com/p/f9ae5691e1bb 01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数 ...
随机推荐
- javaEE体系结构【转载】
转载自: http://blog.csdn.net/chjskarl/article/details/72629014?locationNum=3&fps=1 JavaEE是一套使用Java进 ...
- POJ 2387 Til the Cows Come Home 【最短路SPFA】
Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...
- extjs的使用笔记2
系统的大部分资源(安装程序的除bin, lib, conf等之外的东西)都是放在 /usr/share/目录中的 在用户自己定义的, 一些关于系统资源的东西, 则放在目录 ~/.local/share ...
- WebLogic调用WebService提示Failed to localize、Failed to create WsdlDefinitionFeature
在本地Tomcat环境下调用WebService正常,但是部署到WebLogic环境中,则提示警告:[Failed to localize] MEX0008.PARSING_MDATA_FAILURE ...
- ZooKeeper分布式过程协同技术详解2——了解ZooKeeper
这个服务如何实现这些协作方面的原语? ZooKeeper基础
- Latex: "Missing $ inserted" 解决方法
参考: Latex报"Missing $ inserted"的解决方法 Latex: "Missing $ inserted" 解决方法 原因一:在文中出现&q ...
- Python: 字典应用题
Write a program to read through the mbox-short.txt and figure out who has sent the greatest number o ...
- 基于SVM的python简单实现验证码识别
验证码识别是一个适合入门机器学习的项目,之前用knn 做过一个很简单的,这次用svm来实现.svm直接用了开源的库libsvm.验证码选的比较简单,代码也写得略乱,大家看看就好. 1. 爬取验证码图片 ...
- HashMap分析
原文链接:http://www.cnblogs.com/chengxiao/p/6059914.html 一.什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 ...
- Qt基础学习(3)-----滑动条之QSlider
//mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLineEdit; class Q ...