通过RxBus来实现事件的通知和订阅,简化应用组件间的通信,解耦事件的发送者和接收者,避免复杂和容易出错的依赖和生命周期的问题.

1. 依赖方式Dependency

1.1 Maven

com.hanzhifengyun

rxbus

1.0.0

pom

1.2 Gradle

compile 'com.hanzhifengyun:rxbus:1.0.0'

2 如何使用Use

2.1 在合适的时机注册

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//在页面创建时订阅

RxBus.getInstance().register(this);

}

2.2 在合适的时机解除注册

@Override

protected void onDestroy() {

super.onDestroy();

//在页面销毁时解除订阅,防止页面销毁后导致内存溢出

RxBus.getInstance().unRegister(this);

}

2.3 如何发送事件

只发送事件code,不包含数据,一般用于通知某一事件的发生

RxBus.getInstance().send(int code);

只发送事件数据,不包含code,一般用于所有关心相同类型数据变化的接收者

RxBus.getInstance().send(Object data);

根据不同code发送事件数据,只有相同的code和数据类型的接收者才能接收到数据

RxBus.getInstance().send(int code, Object data);

2.4 如何接收事件

在已经注册过的类中自定义一个public方法,方法名随意,参数填写需要接收数据的类型.

在方法上添加注解OnSubscribe,表示接收订阅的信息:

code: 用于区分发送的不同事件的标识,int类型

threadType: 标识事件接收时回调在什么线程

2.5 例子:

只关心事件类型,不包含数据

定义事件类型

public static final int CODE_PAY_SUCCESS = 3;//支付成功事件

发送事件

RxBus.getInstance().send(CODE_PAY_SUCCESS);

接收事件,并在UI主线程中消费

@OnSubscribe(code = CODE_PAY_SUCCESS, threadType = ThreadType.UI)

public void onPaySuccess() {

//do something after pay success…

}

只关心事件数据

发送事件,只包含数据

List dataList = new ArrayList<>();

dataList.add("a");

dataList.add("b");

dataList.add("c");

RxBus.getInstance().send(dataList);

接收数据,并在IO子线程中消费

@OnSubscribe(threadType = ThreadType. IO)

public void onDataChanged(List dataList) {

// do something for data…

}

只关心特定的事件类型和特定的数据

定义事件类型

public static final int CODE_LOAD_DATA = 9;//加载数据事件

发送事件

List dataList = new ArrayList<>();

dataList.add("a");

dataList.add("b");

dataList.add("c");

RxBus.getInstance().send(CODE_LOAD_DATA, dataList);

接收数据,并在CURRENT_THREAD当前线程中消费

@OnSubscribe(code = CODE_LOAD_DATA, threadType =

ThreadType. CURRENT_THREAD)

public void onDataChanged(List dataList) {

// do something for data…

}

android rxbus github,RxBus for Android相关推荐

  1. android framework,GitHub - zhaozepeng/Android_framework: android framework 用来快速开发的android框架...

    android_framework an android framework in order for rapid development ##1.开发环境## 环境为android studio + ...

  2. 阿里开源android脚手架,GitHub - HiJesse/Gaea: Android 脚手架(组件化, 插件化)

    Gaea Gaea是一个基于Atlas实现Android项目组件化和插件化的脚手架. 可以根据此脚手架快速开发一款具有插件化特性的App, 也可以提供参考和帮助现有项目实现插件化. 项目模块 模块命名 ...

  3. android增量编译,GitHub - brok1n/androidBsdiffUpdate: Android增量更新项目源代码。带C源程序以及ndk编译好的so包。可以直接导出使用。...

    androidBsdiffUpdate 大家好.我是brok1n 这是我基于bsdiff二进制差分库修改而成的安卓客户端增量更新工具. 用这个工具.可以实现Bsdiff二进制差分工具的 差分包和旧版本 ...

  4. 开源需自立!Android、GitHub、Apache全线告急!

    作者 | 胡巍巍&伍杏玲 责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 华为四面楚歌,"破窗效应"爆发! 继5月16日美国商务部工业与安全局(BIS)将华 ...

  5. 【转】GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  6. GitHub 优秀的 Android 开源项目——转自多篇网络文章

    GitHub 优秀的 Android 开源项目 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的Vie ...

  7. Android使用Github Actions持续集成并自动上传apk到蒲公英App内测分发平台(含证书密码脱敏)

    目录 1.前言 2.Github Actions持续集成 3.上传apk到蒲公英 4.Gradle配合Github Actions的Secret使用 4.1设置Github Actions Secre ...

  8. GitHub优秀的Android开源项目

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

  9. GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

  10. GitHub 优秀的 Android 开源项目 转自http://blog.csdn.net/shulianghan/article/details/18046021

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

最新文章

  1. 为什么 Python 没有 main 函数?
  2. python语言入门u-Python语言十分钟快速入门
  3. ubuntu下搭建eclipse+tomcat的web开发环境
  4. 编译我的hello.ko
  5. DE12 Continuation: General Theory for Inhomogeneous ODEs
  6. jsp文件过大,is exceeding 65535 bytes limit
  7. HashSet HashTable HashMap的区别
  8. SpringBoot体验Mybatis、MybatisPlus、TKMybatis
  9. 安装release版本的apk
  10. 计算机设备管理器被禁用,win系统管理员被禁用在安全模式的解决方法
  11. Rust图片类型识别
  12. 大数据入门-大数据技术概述(一)
  13. 云控系统机房搭建为什么用到网络交换机?
  14. Linux 常用命令
  15. 信息学奥赛一本通C++语言-----1064:奥运奖牌计数
  16. IFrame语法小全
  17. 耗时整整3个月,我梳理了200道Android面试基础(上)【面试必考,全网最全,每天一遍】
  18. 数据库软件MySQL的下载与安装+Navicat for MySQL图形化管理界面的下载与连接
  19. Unity MVC设计模式与UI背包界面制作
  20. 阿里面试题java,学习路线+知识点梳理

热门文章

  1. FRM考试时间明细,FRM考试全方面日程表
  2. Scrum敏捷开发过程
  3. 7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)...
  4. 在线XML转JSON工具
  5. jquery+cropper剪切、旋转、缩放图片
  6. win10永久禁用驱动数字签名强制的方法
  7. openwrt折腾记2-广告拦截adbyby与pass
  8. jwplayer html插件,jQuery插件JWPlayer视频播放器用法实例分析
  9. 三极管三种基本放大电路
  10. 验证码 工具 Kaptcha 配置参数