android EventBus 3.0使用指南
Enventbus的作用和好处我就不多说了,这里介绍下怎么使用。
2.+版本的使用方法
public void onEvent(MessageEvent event) { log(event.message); }
public void onEventMainThread(MessageEvent event) { textField.setText(event.message); }
public void onEventBackgroundThread(MessageEvent event){ saveToDisk(event.message); }
3.0以后的写法
@Subscribe(threadMode = ThreadMode.MainThread) //在ui线程执行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.BackgroundThread) //在后台线程执行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.Async) //强制在后台执行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.PostThread) //默认方式, 在发送线程执行 public void onUserEvent(UserEvent event) { }
相对之前,大量用到了注解,对于注解的介绍,请查看下面的文章http://blog.csdn.net/xiangzhihong8/article/details/52850214
EnventBus的简单使用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); //第1步: 注册 } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);//反注册 } @Subscribe(threadMode = ThreadMode.BackgroundThread) //第2步:注册一个在后台线程执行的方法,用于接收事件 public void onUserEvent(ClassEvent event) {//参数必须是ClassEvent类型, 否则不会调用此方法 } //在任意地方,调用发送事件 EventBus.getDefault().post(new ClassEvent());//第3步: 发送事件,当然参数是Object,所以可以发送任何对象 //在任意地方,注册事件类 public static class ClassEvent{ } //定义一个事件, 可以不包含成员变量,和成员方法 //当然你也可以定义包含成员变量的事件, 用来传递参数 public class MsgEvent { public String jsonData; public MsgEvent(String jsonData) { this.jsonData = jsonData; } }
Sticky事件的使用
如果你使用postSticky发送事件, 那么可以不需要先注册, 也能接受到事件。
首先,你可能需要声明一个方法:
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true) public void onEvent(MsgEvent event){ }
注意这里的sticky必须设置为true。
然后就可以发送事件了。
EventBus.getDefault().postSticky(new MsgEvent("With Sticky"));
然后再需要接受的地方就可以接受发送的事件了
对于EventBus这里有几个参数需要重点说明下
/** * threadMode 表示方法在什么线程执行 (Android更新UI只能在主线程, 所以如果需要操作UI, 需要设置ThreadMode.MainThread) * sticky 表示是否是一个粘性事件 (如果你使用postSticky发送一个事件,那么需要设置为true才能接受到事件) * priority 优先级 (如果有多个对象同时订阅了相同的事件, 那么优先级越高,会优先被调用.) * */ @Subscribe(threadMode = ThreadMode.MainThread, sticky = true, priority = 100) public void onEvent(MsgEvent event){ }
android EventBus 3.0使用指南的更多相关文章
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- Android EventBus 3.0.0 使用总结
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6039221.html 本文出自[赵彦军的博客] 前言 EventBus框架 EventBus是一个通用的叫法 ...
- Android Studio 2.0使用指南
一.下载界面.[无激活码 无序列码 无毒请放心使用][需将JAVA程序升级到1.8] 网址:http://www.android-studio.org/index.php/download/andro ...
- Android消息传递之EventBus 3.0使用详解
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...
- Android(Lollipop/5.0) Material Design(二) 入门指南
Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...
- Android 框架学习1:EventBus 3.0 的特点与如何使用
前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...
- Android消息传递之EventBus 3.0
Android消息传递之EventBus 3.0使用详解 http://www.cnblogs.com/whoislcj/p/5595714.html EventBus 3.0进阶:源码及其设计模式 ...
- Windows8下PhoneGap 4 + Android Studio 1.0 + VS2013配置指南
1.准备工作 安装JDK1.6+,设置环境变量 JAVA_HOME C:\Program Files\Java\jdk1.5.0_07 CLASSPATH .;%JAVA_HOME%\lib Path ...
- Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...
随机推荐
- hdu 5428
题意:一个数是这n个数的乘,找出它一个不是素数的最小因子 求出所有数的所有质因子中最小的两个,相乘就是答案.如果所有数字的质因子个数不到两个,那么就是无解. #include<iostream& ...
- [BZOJ]1089 严格n元树(SCOI2003)
十几年前的题啊……果然还处于高精度遍地走的年代.不过通过这道题,小C想mark一下n叉树计数的做法. Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该 ...
- bzoj4559[JLoi2016]成绩比较 容斥+拉格朗日插值法
4559: [JLoi2016]成绩比较 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 261 Solved: 165[Submit][Status ...
- ubuntu Linux下C语言open函数打开或创建文件与read,write函数详细讲解
open(打开文件) 相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen 表头文件 #include<sys/types.h> ...
- jQuery Datetable
先来个官网可以直接看官网 https://www.datatables.net/manual/data/ 安装 DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互 ...
- Python之作业购物车
作业之购物车优化 购物车优化要求如下: 用户入口: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就 ...
- spring基本原理
作者:王奕然链接:https://www.zhihu.com/question/21346206/answer/101789659来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- CSS之绝对定位
w3school定义: 绝对定位的元素的位置相对于最近的已定位祖先元素(这里的已定位指的是绝对定位或者相对定位),如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块. 对于定位的主要问题是要 ...
- React Native 系列(三) -- 项目结构介绍
前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...
- JavaScript正则表达式模式匹配(5)——特殊字符匹配、换行模式
特殊字符匹配 var pattern=/\[/; // 用\符号来转义正则里的特殊字符才能匹配 var str='['; alert(pattern.test(str)); 换行模式 var patt ...