如何升級到RxAndroid 1.0

jopen 9年前發布 | 8K 次閱讀 RxAndroid


最近很多人問我: RxAndroid 在搞什么鬼?

事實上市,RxAndroid之前的版本確實是有點換亂,因此最近進行了一次大得重構。 這里 有詳細的說明,概括來說就是:

從頭開始對RxAndroid進行模化的改造,讓這個庫變成一個可服用的,可組合的模塊。

這個目標已經達成,但是如果你升級到1.0,你可能會很奇怪:東西都跑到哪里去了,如何才能讓我的代碼通過編譯?

RxAndroid

AndroidSchedulers 是RxAndroid中唯一保留下來的,但是一些方法簽名已經變了。

遷移部分

WidgetObservable 和 ViewObservable 被打包進了 RxBinding 項目中,并且做了一些改進。

LifecycleObservable 遷移到了 RxLifecycle 項目中。另外需要注意的是,這里進行了一些相對比較大幅度的重構,所以使用的時候請參考一下修改日志。

ContentObservable.fromSharedPreferencesChanges() 遷移到了 rx-preferences 項目。

刪除部分

AppObservable 連同它的bind方法已經被完全刪除掉了。AppObservable本身有很多問題:

  • AppObservable嘗試來做自動unsubscribe,但是僅僅是在 Activity或者Fragment已經paused之后Observable再發出一個事件,才會觸發自動unsubscribe。也就是說,如果 Activity或者Fragment如果沒有paused,一個不會complete的Observable將永遠不會被unsubscribe。

  • AppObservable被設計用來在pause之后避免繼續受到消息,但是因為HandlerScheduler的 一個bug ,導致某些場景存在缺陷。

  • AppObservable自動調用了observeOn(AndroidSchedulers.mainThread()),不管你是不是想在主線程這么做。

換句話來說,AppObservable并沒有做到它所描述的功能,它的可定制性也比較差,并且還會有一些非期望的副作用。

刪除AppObservable的時候,可以這樣做:

手動的處理Subscription(或者使用RxLifecycle),來在適當的時機做unsubscribe。檢查一下你是否需要使用observeOn(AndroidSchedulers.mainThread())。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!