Android 消息分发使用EventBus的实例详解

Android 消息分发使用EventBus的实例详解

1. AndroidStudio使用

dependencies {

  //最新版本
  compile 'org.greenrobot:eventbus:3.0.0' 

  //可以翻倍提高EventBus使用效率
  provided 'de.greenrobot:eventbus-annotation-processor:3.0.0-beta1'

}

2. 在基类Activity中配置

/**
 * Activity基类
 */
protected EventBus eb;

 @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //单例模式获取到实例并注册
    eb = EventBus.getDefault();
    eb.register(this);

  }

 @Override
  protected void onDestroy() {
    //反注册
    eb.unregister(this);
    super.onDestroy();
  }

 //主线程
 @Subscribe(threadMode = ThreadMode.MAIN)
 public void onMainEvent(EventBean event) {
 }

 //主线程 粘性(比如传递intent使用)
 @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
 public void onMainStickEvent(EventBean event) {
 }

 //后台
 @Subscribe(threadMode = ThreadMode.BACKGROUND)
 public void onBackgroundEvent(EventBean event) {
 }

 //重新开启一个线程来执行
 @Subscribe(threadMode = ThreadMode.ASYNC)
 public void onAsyncEvent(EventBean event) {
 }

一般情况下,常用重写onMainEvent ( ) 方法即可。

3. 创建自定义消息实体

//根据不同需求自定义
/**
 * 自定义Event消息
 */
public class EventBean {

  public int id;//类型标识

  public Object data;//数据对象

  //省略constructor & getter & setter
}

4. 发送消息

继承自基类Activity后:

eb.post(new EventBean(1, "data"));

//粘性
eb.postSticky(new EventBean(1, "data"));

5. 消息处理

根据数据处理的需求重写基类的4个方法即可。

以上就是Android 消息分发使用EventBus的实例,如有疑问请留言或者到本站社区交流讨论,本站关于Android的文章还有很多希望大家搜索查阅,谢谢大家对本站的支持!

(0)

相关推荐

  • Android 中 EventBus 的使用之多线程事件处理

    在这一系列教程的最后一篇中,我想谈谈GR的EventBus,在处理多线程异步任务时是多么简单而有效. AsyncTask, Loader和Executor-- 拜托! Android中有很多种执行异步操作的方法(指平行于UI线程的).AsyncTask对于用户来说是最简单的一种机制,并且只需要少量的设置代码即可.然而,它的使用是有局限的,正如Android官方文档中所描述的: AsyncTask被设计成为一个工具类,在它内部包含了Thread和Handler,但它本身并不是通用线程框架的一部分.

  • Android之利用EventBus发送消息传递示例

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦. 1.下载EventBus的类库 源码:EventBus_jb51.rar 2.基本使用 (1)自定义一个类,可以是空类,比如: public class AnyEventType { public AnyEventType(){} }

  • Android EventBus 3.0.0 使用总结(必看篇)

    前言 EventBus框架 EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多.用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是限定了方法名,不支持注解.另一个库square/otto修改自 Guava ,用的人也不少.所以今天我们研究的目标是greenrobot的EventBus. EventBus 简介 1.EventBus3.0.0 是最新的

  • Android中使用开源框架eventbus3.0实现fragment之间的通信交互

    1.概述 在之前的博文中简单介绍过如何实现fragment之间的信息交互:<Android中Fragment与Activity之间的交互(两种实现方式)>,今天继续给大家介绍一种可以实现此效果的另外一种方式EventBus.(相比于handler,接口回调,bundle传参,这个简单好用到哭) EventBus是Android下高效的发布/订阅事件的消息总线.作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment.Activity.Service.线程

  • Android 消息分发使用EventBus的实例详解

    Android 消息分发使用EventBus的实例详解 1. AndroidStudio使用 dependencies { //最新版本 compile 'org.greenrobot:eventbus:3.0.0' //可以翻倍提高EventBus使用效率 provided 'de.greenrobot:eventbus-annotation-processor:3.0.0-beta1' } 2. 在基类Activity中配置 /** * Activity基类 */ protected Eve

  • Android 拦截返回键事件的实例详解

    Android 拦截返回键事件的实例详解 KeyEvent类 Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的 按键事件和返回键有关的常量和方法有. KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,如果一直按住不放,则会不停产生此事件. KeyEvent.ACTION_UP:表示事件为为放开key,一次点击key过程只会调用一次. public final in

  • Android开心消消乐代码实例详解

    突然想要在android上写一个消消乐的代码,在此之前没有系统地学过java的面向对象,也没有任何android相关知识,不过还是会一点C++.8月初开始搭建环境,在这上面花了相当多的时间,然后看了一些视频和电子书,对android有了一个大概的了解,感觉差不多了的时候就开始写了. 疯狂地查阅各种资料,反反复复了好几天后,也算是写出了个成品.原计划有很多地方还是可以继续写下去的,比如UI设计,比如动画特效,时间设计,关卡设计,以及与数据库的连接,如果可以的话还能写个联网功能,当然因为写到后期内心

  • Android 控件自动贴边实现实例详解

    目录 正文 判断交互 隐藏与显示 示例 正文 最近接到个需求,需要在用户与App交互时,把SDK中之前实现过的悬浮控件贴边隐藏,结束交互后延迟一段时间再自动显示.本篇文章介绍一下实现的思路. 判断交互 用户与App交互.结束交互可以通过监听触摸事件来实现.建议使用的Activity的dispatchTouchEvent,Activity下的所有触摸事件分发时都会回调此方法,代码如下: class AutoEdgeHideActivity : BaseGestureDetectorActivity

  • Android 通过网络图片路径查看图片实例详解

    Android 通过网络图片路径查看图片实例详解 1.在项目清单中添加网络访问权限 <!--访问网络的权限--> <uses-permission android:name="android.permission.INTERNET"/> 2.获取网络图片数据 /** * 获取网络图片的数据 * @param path 网络图片路径 * @return * @throws Exception */ public static byte[] getImage(Str

  • Android 自定义imageview实现图片缩放实例详解

    Android 自定义imageview实现图片缩放实例详解 觉得这个自定义的imageview很好用 性能不错  所以拿出来分享给大家  因为不会做gif图  所以项目效果 就不好贴出来了  把代码贴出来 1.项目结构图 2.Compat.class package com.suo.image; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.view.View; pu

  • Android xmlns 的作用及其自定义实例详解

     Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上面你写错了,不会有任何问题,但是在运行的时候就会有问题,提示你没有指定宽度等什么.这个是不用联

  • Android 开发中使用Linux Shell实例详解

    Android 开发中使用Linux Shell实例详解 引言 Android系统是基于Linux内核运行的,而做为一名Linux粉,不在Android上面运行一下Linux Shell怎么行呢? 最近发现了一个很好的Android Shell工具代码,在这里分享一下. Shell核心代码 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.

  • Android String资源文件插入值实例详解

    Android String资源文件插入值实例详解 我们在用string字符串资源文件引用的时候,有时候会遇到一串字符串要在中间插入一个值的问题, 比如 登录名: XXX,这里XXX是变化的.这时候我们可能会想到拼接.其实也可以使用格式化方式处理.比如 <string name="alert">I am %1$d years old</string> 在代码中使用的话: nt nAge=23; String sAgeFormat = getResources()

  • Android屏幕及view的截图实例详解

    Android屏幕及view的截图实例详解 屏幕可见区域的截图 整个屏幕截图的话可以用View view = getWindow().getDecorView(); public static Bitmap getNormalViewScreenshot(View view) { view.setDrawingCacheEnabled(true); view.buildDrawingCache(); return view.getDrawingCache(); } scrollview的整体截屏

随机推荐