RxJava2的API入门使用手记

本文聚焦RxJava2在Java应用层的逻辑,介绍如何在maven项目中导入依赖,并着重讲解RxJava2的核心元素,包括Observable、Observer、Disposable、ObservableOnSubscribe和Emitter。同时,概述了任务调度器的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RxJava的主要使用场景是Android,本片文章只关注其Java逻辑,限于应用层。

maven项目导入依赖 =》pom.xml

<dependency>
    <groupId>io.reactivex.rxjava2</groupId>
    <artifactId>rxjava</artifactId>
    <version>2.0.3</version>
</dependency>

RxJava2主要有以下需要注意的5个元素:

  1. Observable(被观察者、通过其创建可观察序列:create()方法、通过subscribe注册一个观察者)
  2. Observer(观察者接受数据,subscribe方法参数)
  3. Disposable(接口:dispose()方法和isDisposed()方法,用于取消订阅和获取当前订阅状态)
  4. ObservableOnSubscribe(当订阅时触发调用,向订阅者发送数据用的接口)
  5. Emitter(即,onNext()、onError()、onComplete)

任务调度器的几个使用场景

Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
        observableEmitter.onNext("Hello");
        observableEmitter.onComplete();
    }
}).subscribeOn(Schedulers.io());
public static Scheduler computation() {return RxJavaPlugins.onComputationScheduler(COMPUTATION);}

public static Scheduler io() {return RxJavaPlugins.onIoScheduler(IO);}

public static Scheduler trampoline() {return TRAMPOLINE;}

public static Scheduler newThread() {return RxJavaPlugins.onNewThreadScheduler(NEW_THREAD);}

public static Scheduler single() {return RxJavaPlugins.onSingleScheduler(SINGLE);}

1. 例子:

// 创建observable
Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
        observableEmitter.onNext("I");
        observableEmitter.onNext("Love");
        observableEmitter.onComplete();
    }
});
// 线程变换
observable.subscribeOn(Schedulers.io());
// 创建Observer
Observer observer = new Observer<String>() {
    @Override
    public void onSubscribe(Disposable disposable) { System.out.println("订阅状态:"+disposable.isDisposed()); }
    @Override
    public void onNext(String s) { System.out.println("onNext执行逻辑:"+ s); }
    @Override
    public void onError(Throwable throwable) { System.out.println("onError"); }
    @Override
    public void onComplete() { System.out.println("onComplete"); }
};
// 订阅
observable.subscribe(observer);

//执行结果:
//订阅状态:false
//onNext执行逻辑:I
//onNext执行逻辑:Love 
//onComplete

2.API

=====================================================================

初始 Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
        observableEmitter.onNext("I");
        observableEmitter.onComplete();
    }
});
observable.subscribeOn(Schedulers.io());
Observer observer = new Observer<String>() {
    @Override
    public void onSubscribe(Disposable disposable) { System.out.println("订阅状态:"+disposable.isDisposed()); }
    @Override
    public void onNext(String s) { System.out.println("onNext执行逻辑:"+ s); }
    @Override
    public void onError(Throwable throwable) { System.out.println("onError"); }
    @Override
    public void onComplete() { System.out.println("onComplete"); }
};
create Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
        observableEmitter.onNext("I");
        observableEmitter.onComplete();
    }
});
just // 发送的事件不超过10个
observable.just("1","2","3").subscribe(observer);
fromArray // 发送事件超过10个,或者传入数组
observable.fromArray("1","......10").subscribe(observer);
String array[] = {"1","2","3"};
observable.fromArray(array).subscribe(observer);
fromCallable  
fromFuture  
fromIterable // 用于可以迭代的对象 如List
List<String> list = new ArrayList<>();
list.add("1");list.add("2");list.add("3");
observable.fromIterable(list).subscribe(observer);
timer // 多长时间后开始执行onNext,并传入0L
Observable.timer(2, TimeUnit.SECONDS).subscribe(new Observer<Long>() {
    @Override
    public void onSubscribe(Disposable disposable) { System.out.println("onSubscribe"); }
    @Override
    public void onNext(Long aLong) { System.out.println("onNext: "+aLong); }
    @Override
    public void onError(Throwable throwable) { }
    @Override
    public void onComplete() { System.out.println("onComplete"); }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值