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使用指南的更多相关文章

  1. Android EventBus 3.0 实例使用详解

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

  2. Android EventBus 3.0.0 使用总结

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

  3. Android Studio 2.0使用指南

    一.下载界面.[无激活码 无序列码 无毒请放心使用][需将JAVA程序升级到1.8] 网址:http://www.android-studio.org/index.php/download/andro ...

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

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

  5. Android(Lollipop/5.0) Material Design(二) 入门指南

    Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...

  6. Android 框架学习1:EventBus 3.0 的特点与如何使用

    前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...

  7. Android消息传递之EventBus 3.0

    Android消息传递之EventBus 3.0使用详解 http://www.cnblogs.com/whoislcj/p/5595714.html EventBus 3.0进阶:源码及其设计模式 ...

  8. 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 ...

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

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

随机推荐

  1. 一起来Fit TDMA over WiFi(1)

    1 概述 WiFI TDMA领域,2009年Sam  Leffler在<TDMA for Long Distance Wireless Networks>首次系统提出了TDMA技术方案,并 ...

  2. Django中ORM操作

    ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...

  3. Cisco 关闭命令同步提示信息

    Router(config)#no logging console 如果你通过console连接,使用第一条Router(config)#no logging monitor 如果通过telnet,s ...

  4. angularJS入门笔记

    1.debug调试工具:batarang2.ng指令 1.ng-app=" " 定义angularJS的使用范围:----main方法,入口 ng-app="myModu ...

  5. TypeScript知识点

    TypeScript介绍 TypeScript为JavaScript的超集(ECMAScript6), 这个语言添加了基于类的面向对象编程.TypeScript作为JavaScript很大的一个语法糖 ...

  6. C#判断画的图形是不是三角形

    这个源代码写的不是十全十美,只是提供一个 还待完善的地方例如判断是否这个图形是封闭的.得空在解决吧 这只是一个算法上 谁有c#的参考手册网盘分享一份 谢谢 下面请看源码 凑够150个字了,不废话了. ...

  7. ABP文档笔记 - 事件BUS

    文档: ABP框架 - 领域事件(EventBus) EventBus & Domain Events ABP源码分析二十五:EventBus EventBus(事件总线) EventBus是 ...

  8. JSON 封装函数

    var eventUtil = { addHandler:function(element,type,handler) { //添加句柄 if(element.addEventListener) { ...

  9. linux和android开发链接

    1.Tracy Mcgrady的专栏冰山一角:linux和Android底层开发,主要是mtk系列点击打开链接 2.郁闷Wednesday:嵌入式linux 单片机 android,点击打开链接 3. ...

  10. vue以及js的一些坑或常用技巧

    判断空object Object.getOwnPropertyNames(obj).length === 0 模拟range Array.apply(null, Array(5)).map(funct ...