前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【RxJava】RxJava 基本用法 ( 引入 RxJava 依赖 | 定义 Observer 观察者 | 定义 Observable 被观察者 | 被观察者订阅观察者 )

【RxJava】RxJava 基本用法 ( 引入 RxJava 依赖 | 定义 Observer 观察者 | 定义 Observable 被观察者 | 被观察者订阅观察者 )

作者头像
韩曙亮
发布2023-10-11 16:46:22
3530
发布2023-10-11 16:46:22
举报

一、RxJava 基本用法

本章节涉及到的 RxJava 组成要素 :

  • Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息 , 消息的格式可以通过泛型进行定义 ; 消息发送完毕后 会 通知观察者。Observable 通过 订阅观察者 来实现 消息的传递。
  • Observer(观察者): Observer 表示一个接收 Observable 发送消息 的观察者。 它可以处理从 Observable 发射的消息, 还可以处理错误和完成的事件。
  • Subscription(订阅): 订阅是 Observer 对 Observable 的绑定, 它表示观察者正在接收 Observable 的数据项。 订阅可以被取消, 取消订阅后 Observer 观察者将不再接收 Observable 被观察者 的消息。

1、引入 RxJava 依赖

Gradle 项目中 , 在 build.gradle 构建脚本中 , 添加如下依赖 ;

代码语言:javascript
复制
dependencies {
    implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
}

rxjava3 依赖 :

代码语言:javascript
复制
dependencies {
	implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
}

Maven 项目中 , 在 pom.xml 中添加如下依赖 ;

代码语言:javascript
复制
<dependency>
    <groupId>io.reactivex.rxjava2</groupId>
    <artifactId>rxjava</artifactId>
    <version>2.2.21</version>
</dependency>

rxjava3 依赖 :

代码语言:javascript
复制
<dependency>
    <groupId>io.reactivex.rxjava3</groupId>
    <artifactId>rxjava</artifactId>
    <version>3.0.0</version>
</dependency>

2、定义 Observer 观察者

Observer(观察者): Observer 表示一个接收 Observable 发送消息 的观察者。 它可以处理从 Observable 发射的消息, 还可以处理错误和完成的事件。

Observer 观察者 是 操作的核心 , 定义在需要进行具体操作的位置 , 执行具体的 异步操作 或 事件 ;

如 : 在 UI 界面中 , 点击按钮 , 查询远程数据库服务器中的数据 , 查询完毕后更新 UI 界面 ;

  • 该 Observer 观察者 就需要 定义在 UI 界面中 , 可以获取到相关的 UI 组件进行数据更新 ;
  • Observable 被观察者可以定义在 Observer 观察者位置 , 也可以定义在消息发送的位置 , 这里 推荐定义在消息发送的位置 ;
  • 调用时 , 将 Observer 观察者 传递给对应的异步操作函数 ;
  • 在异步操作函数中 , 创建 Observable 被观察者 , 并且通过订阅将观察者订阅到被观察者中 ;
  • 订阅操作 , 就会同时发送消息给 观察者 ;

Observer 观察者定义代码 :

代码语言:javascript
复制
Observer<String> observer = new Observer<String>() {
    @Override
    public void onSubscribe(Disposable d) {
        // 当观察者订阅时的回调
    }

    @Override
    public void onNext(String value) {
        // 当接收到新的事件时的回调
        System.out.println(value);
    }

    @Override
    public void onError(Throwable e) {
        // 当发生错误时的回调
    }

    @Override
    public void onComplete() {
        // 当事件流结束时的回调
    }
};

3、定义 Observable 被观察者

Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息 , 消息的格式可以通过泛型进行定义 ; 消息发送完毕后 会 通知观察者。Observable 通过 订阅观察者 来实现 消息的传递。

代码语言:javascript
复制
Observable<String> observable = Observable.just("Hello", "World");

4、Observable 被观察者订阅 Observer 观察者

Subscription(订阅): 订阅是 Observer 对 Observable 的绑定, 它表示观察者正在接收 Observable 的数据项。 订阅可以被取消, 取消订阅后 Observer 观察者将不再接收 Observable 被观察者 的消息。

调用 Observable 被观察者 的 subscribe 函数 , 订阅 Observer 观察者 ;

该订阅操作的同时 , 会将消息发送给 Observer 观察者 , 触发 Observer#onNext 函数 ;

代码语言:javascript
复制
observable.subscribe(observer);

二、代码示例


代码示例 :

代码语言:javascript
复制
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

public class Main {
    public static void main(String[] args) {
        Observable<String> observable = Observable.just("Hello", "World", "RxJava");

        Observer<String> observer = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                // 当观察者订阅时的回调
            }

            @Override
            public void onNext(String value) {
                // 当接收到新的事件时的回调
                System.out.println(value);
            }

            @Override
            public void onError(Throwable e) {
                // 当发生错误时的回调
            }

            @Override
            public void onComplete() {
                // 当事件流结束时的回调
            }
        };

        observable.subscribe(observer);
    }
}

执行结果 :

代码语言:javascript
复制
Hello
World
RxJava
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、RxJava 基本用法
    • 1、引入 RxJava 依赖
      • 2、定义 Observer 观察者
        • 3、定义 Observable 被观察者
          • 4、Observable 被观察者订阅 Observer 观察者
          • 二、代码示例
          相关产品与服务
          数据库专家服务
          数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档