rxjava它就是一個(gè)實(shí)現(xiàn)異步操作的庫.同樣是做異步,為什么人們用它帆卓,而不用現(xiàn)成的 AsyncTask / Handler / XXX /異步操作很關(guān)鍵的一點(diǎn)是程序的簡(jiǎn)潔性.它和普通的觀察者完全不同標(biāo)準(zhǔn)觀察者模式只有一個(gè)被觀察者 多個(gè)觀察者并且被觀察者改變通知觀察者才能掛查到邦尊。RxJava 中是多個(gè)被觀察者一個(gè)觀察者奔害,并且需要起點(diǎn)和終點(diǎn)訂閱一次后,才發(fā)出改變通知,終點(diǎn)(觀察者)才能察覺到折剃,所以也叫訂閱模式
1.Observer 四個(gè)接口? onSubscribe? onNext onError? onComplete?
2.Observable創(chuàng)建過程ObSservable.creat()里面放一個(gè)自定義的Source
3.subscribe 訂閱流程 observableCreate.subscribe() 里面放自定義的觀察者observer
方法里面調(diào)用subscribeActual();從右往左再?gòu)淖笙蛴?U型結(jié)構(gòu)
rxJava的Hook
每一個(gè)操作符的實(shí)現(xiàn)都有 RxJavaPlugins.onAssembly() 方法進(jìn)去的參數(shù)和返回的參數(shù)是一樣的。中間有個(gè)默認(rèn)為空的onObserableAssembly可以為其賦值實(shí)現(xiàn)Hook像屋。
關(guān)于Map的分析
tip
1.rxjava 引入為什么還要rxandroid? (補(bǔ)全rxjava) 線程切換用的rxandroid
.oobserverOn(Schedulers.io)//給上面的分配io子線程線程 里面的返回和上面的hook一樣我們可以重寫方法hook用于監(jiān)聽io線程使用次數(shù)怕犁。或者其他
.observerOn(Android.mainThread)主線程
Rxjava+Retryfit結(jié)合
retryfit 運(yùn)用動(dòng)態(tài)代理? 以及注解 和反射 在寫接口的時(shí)候返回observiable和rxjava融合成為起點(diǎn)己莺。動(dòng)態(tài)代理操作單元: 接口? 實(shí)現(xiàn)? ?代理? 接口傳入代理類卡返回實(shí)例化的數(shù)據(jù)奏甫。
rxbinding(防抖)
rxview.click(控件id).throttleFirst(2s,1次).subscribe()......
解決網(wǎng)絡(luò)嵌套(flatmap)
doOnnext()