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

相关文章
|
7天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
7天前
|
Java
Java并发编程:深入理解线程池
【4月更文挑战第30天】本文将深入探讨Java并发编程中的一个重要主题——线程池。我们将从线程池的基本概念入手,了解其工作原理和优势,然后详细介绍如何使用Java的Executor框架创建和管理线程池。最后,我们将讨论一些高级主题,如自定义线程工厂和拒绝策略。通过本文的学习,你将能够更好地理解和使用Java的线程池,提高你的并发编程能力。
|
7天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第30天】本文将深入探讨Java并发编程的核心概念,包括线程安全、同步机制、锁优化以及性能调优。我们将通过实例分析如何确保多线程环境下的数据一致性,同时介绍一些常见的并发模式和最佳实践,旨在帮助开发者在保证线程安全的同时,提升系统的性能和响应能力。
|
4天前
|
Java 调度 开发者
Java 并发编程的探索与实践
【5月更文挑战第3天】在当今多核处理器普及的时代,并发编程已经成为提高程序性能的重要手段。本文将深入探讨 Java 并发编程的基本概念、原理及其在实际项目中的应用,帮助读者更好地理解和掌握 Java 并发编程技巧。
|
5天前
|
XML 监控 安全
18:面向切面编程-Java Spring
18:面向切面编程-Java Spring
24 5
|
5天前
|
并行计算 安全 Java
Java 并发编程的探索之旅
【5月更文挑战第2天】 在多线程的世界里,程序的行为变得错综复杂。本文将带您走进 Java 并发编程的核心概念,通过深入分析并发工具的使用和原理,帮助您构建高效、安全且响应迅速的应用程序。我们将探讨线程的基本知识,同步机制,以及高级并发工具如 Executors、Futures 和 Streams。通过理论与实践相结合的方式,为开发者提供一份清晰、实用的并发编程指南。
14 2
|
6天前
|
存储 安全 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第1天】本文将深入探讨Java并发编程的核心概念,包括线程安全和性能优化。我们将详细分析线程安全问题的根源,以及如何通过合理的设计和编码实践来避免常见的并发问题。同时,我们还将探讨如何在保证线程安全的前提下,提高程序的并发性能,包括使用高效的同步机制、减少锁的竞争以及利用现代硬件的并行能力等技术手段。
|
7天前
|
安全 Java 程序员
Java并发编程:理解并应用ReentrantLock
【4月更文挑战第30天】 在多线程的世界中,高效且安全地管理共享资源是至关重要的。本文深入探讨了Java中的一种强大同步工具——ReentrantLock。我们将从其设计原理出发,通过实例演示其在解决并发问题中的实际应用,以及如何比传统的synchronized关键字提供更灵活的锁定机制。文章还将讨论在使用ReentrantLock时可能遇到的一些挑战和最佳实践,帮助开发者避免常见陷阱,提高程序性能和稳定性。
|
7天前
|
缓存 Java 调度
Java并发编程:深入理解线程池
【4月更文挑战第30天】 在Java并发编程中,线程池是一种重要的工具,它可以帮助我们有效地管理线程,提高系统性能。本文将深入探讨Java线程池的工作原理,如何使用它,以及如何根据实际需求选择合适的线程池策略。
|
7天前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch