RxJava2原始碼解析

2021-08-17 03:00:03 字數 2323 閱讀 2865

原始碼總結:
observabel 通過create方法。將observableonsubscribe物件傳遞給自己。

通過subscribe方法。建立

observableemitter發射器物件。發射器裡又封裝了observer。發射器又作為引數傳遞

給observableonsubscribe物件的

subscribe

(observableemittere)方法。當發射器呼叫onnext方法時。

會呼叫封裝在自己內部的observer的onnext方法;observer將customer封裝在自己內部;observer呼叫onnext方法時

會呼叫customer的accept方法;

一、**的呼叫
//建立被觀察者

observable.create(newobservableonsubscribe() 

}

//通過subscribe連線被觀察著和觀察者
}).subscribe(
//建立觀察者

newconsumer() 

});

二、分析create方法和subscribe方法
1 create方法返回newobservablecreate<t>(source);

public static 

observable create(observableonsubscribe source)

分析observablecreate
source即是一開始建立的這個物件
注意紅色字型處。parent作為引數傳遞給source。即e = parent;而parent又封裝了observer.

new observableonsubscribe() 

}

將source傳遞給observablecreate
在subscribeactual方法裡將observer 和source建立聯絡
publicobservablecreate(observableonsubscribe source) 

@override

protected voidsubscribeactual(observer<?supert> observer)

catch(throwable ex) }//這個方法為parent的方法。所有parent.onnext(),即是呼叫oberver.onnext;customer又被封裝在

lambdaobserver裡。

lambdaobserver.onnext會呼叫customer的accept;

@override

public voidonnext(t t)

if(!isdisposed())

}

public finaldisposable subscribe(consumer<?supert> onnext, consumer<?superthrowable> onerror,

action oncomplete, consumer<?superdisposable> onsubscribe)

public final voidsubscribe(observer<?supert> observer)catch(nullpointerexception e)catch(throwable e) 

}

Rxjava2的簡單實用

第一種方式實現觀察者和被觀察者的建立和建立聯絡 1 建立被觀察者 建立被觀察者 傳送資料 observable observable observable.create new observableonsubscribe 2 建立觀察者 建立觀察者 接受資料 io.reactivex.observe...

RxJava2實現執行緒切換

被觀察者 observable 觀察者 observer 訂閱 subscribe 1 建立被觀察者 observable observable observable.create new observableonsubscribe 2 建立觀察者 observer observer new obs...

RxJava2簡單使用三(執行緒排程)

之前我也用到過執行緒排程,但是沒有仔細講這個問題,我這裡作為新手還是解釋一下 執行緒排程一 基本配置 subscribeon schedulers.newthread 將被觀察者設定在乙個新的執行緒來執行 observeon androidschedulers.mainthread 將觀察者設定在主...