Java高阶编程——RxBus 开源,基于 RxJava 的 event bus-阿里云开发者社区

开发者社区> 欧阳愠斐> 正文

Java高阶编程——RxBus 开源,基于 RxJava 的 event bus

简介: 介绍 RxBus 是一个发布/订阅模式的事件总线,用法和 EventBus 一样简单。RxBus 基于 RxJava 开发,除了拥有和 EventBus 一样简单的事件总线机制之外,还拥有 RxJava 的丰富特性。
+关注继续查看

介绍

RxBus 是一个发布/订阅模式的事件总线,用法和 EventBus 一样简单。RxBus 基于 RxJava 开发,除了拥有和 EventBus

一样简单的事件总线机制之外,还拥有 RxJava 的丰富特性。

Java高阶编程RxBus 开源,基于 RxJava 的 event bus

 

如何使用

  1. 定义 EventData:
  2. public static class EventData { /* Additional fields if needed */ }
  3. 注解定义订阅者的回调方法,回调方法回在 UI 线程中执行:
  4. @RegisterBus
  5. public void onMessageEvent(MessageEvent event) {/* Do something */};
  6. 注册/解注册。 观察者需要被注册到 RxBus,其 @RegisterBus 标记的方法才会被扫描到,在不需要的地方记得解注册。
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11. initView();
  12. // register to RxBus
  13. RxBus.getInstance().register(this);
  14. }
  15. @Override
  16. protected void onDestroy() {
  17. super.onDestroy();
  18. // unregister from RxBus
  19. RxBus.getInstance().unRegister(this);
  20. }
  21. 发送数据:

// send data in thread

Data data = new Data();

Data.setContent("hello world");

RxBus.getInstance().send(data);

比 EventBus 多的优点

RxBus 提供 chainProcess 方法来包装一个处理过程, 处理结果会自动发送到观察者。

Java高阶编程RxBus 开源,基于 RxJava 的 event bus

 

  1. 在 MVP 架构的 M 层你可以这样用
  2. RxBus.getInstance().chainProcess(new Func1() {
  3. @Override
  4. public Object call(Object o) {
  5. // do something in IO thread, the return data can be subscribe and receive.
  6. // getUser() is a IO/net process
  7. User user = getUser();
  8. user.setId(uid);
  9. user.setName("大利猫");
  10. return user;
  11. }
  12. });
  13. 然后在 P 层接收:
  14. /**
  15. * @RegisterBus mark this method to receive data in UI thread
  16. * @param user
  17. */
  18. @RegisterBus
  19. public void onUser(User user) {
  20. userView.showUser(user);
  21. }

Gradle independence

Step 1. Add the JitPack repository to your build file, Add it in your root build.gradle at the end of repositories:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. Add the dependency

dependencies {

compile 'com.github.liuguangli:RxBus:1.1'

}

欢迎加入Java高级架构学习交流群:468947140

进群获取架构资料 还有在大型企业工作十余年的架构师分享经验,Java工程化管理、高性能、分布式、高可用架构、zookeeper、Spring cloud,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货

进群修改群备注:开发年限-地区-经验

点击链接加入群聊【Java-BATJ企业级资深架构】:https://jq.qq.com/?_wv=1027&k=52j2FVO

源码地址

https://github.com/liuguangli/RxBus

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java开源运行分析工具(转)
FProfiler  FProfiler是一个非常快的Java profiler.它利用BCEL和log4j来记录每个方法从开始到结尾的日记.FProfiler可以用来在你的应用程序,Servlet,Applet.
1352 0
不会三种编程语言的不算程序员 走近阿里云 MVP烁淼吐槽大佬
为将阿里云 MVP打造成为技术顶尖人群的社群,建立成员之间连接,促进相互交流和业务影响,迸发各行各业技术人的无限价值。2020年2月初,运营团队与阿里云MVP们共同推出“走近阿里云MVP”新栏目,从技术人性格、开发经验、行业知识积累等方面进行深入分享和交流,了解彼此,产生化学反应,发现不同连接相同!
1262 0
升级 | Java开源诊断工具 Arthas 发布v3.1.0
Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可。此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。
8219 0
GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序
GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序
13 0
C# Redis Server分布式缓存编程(二)
在Redis编程中, 实体和集合类型则更加有趣和实用 namespace Zeus.Cache.Redis.Demo { public class Person { public int Id { get; set; } public ...
990 0
不熟悉的编程语言,项目如何开展?
引言 公司中的开发一般是沿着一种核心开发语言如Java、C/C++、PHP进行相关开发。但由于产品新需求、项目新需要,免不了会使用自己不擅长的语言开发。甚至,现在全栈工程师也比比皆是。对于经验不丰富的职场人,如何开展工作呢? 结合我近期的项目经历,我说下我的经验和教训。
14 0
福利!阿里宣布手淘安卓客户端容器化框架Atlas正式开源
3月13日,手机淘宝安卓客户端容器化框架Atlas正式宣布开源(https://github.com/alibaba/atlas)。Atlas由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发、快速迭代和动态部署,适用于Android 4.x以上系统版本的大小型App开发。
17280 0
+关注
欧阳愠斐
程序员学习交流学习群:908676731
134
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载