RxJava原理初探

100 阅读1分钟

以下记录基于RxJava3.0

基本介绍

RxJava 是 NetFlix 出品的 Java 框架,RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。

个人理解RxJava

1、基于事件/数据,主要使用观察者模式,中间加入各种转换,生成事件链条

2、触发事件,整个链条联动,数据由可观察者经过一系列操作,最终到观察者

基本对象

Observable 被观察者

Observer 观察者

ObservableEmitter 事件发射器

基础使用

//创建观察者
var observer: Observer<String> = object : Observer<String> {
    override fun onSubscribe(d: Disposable) {
    }

    override fun onError(e: Throwable) {
    }

    override fun onComplete() {
    }

    override fun onNext(t: String) {
        Log.e(TAG, "onNext $t");
    }
}

//创建被观察者
var observable: Observable<String> =
    Observable.create<String>(

        //source,数据源
        object : ObservableOnSubscribe<String> {
        override fun subscribe(emitter: ObservableEmitter<String>) {
            emitter.onNext("事件字符串1");
            emitter.onNext("事件字符串2")
            emitter.onNext("事件字符串3")
        }
    });

//订阅操作
observable
    .subscribe(observer);

Rxjava.jpg