Android帝國—四大天王(RxAndroid) 2

yzf01發表於2021-09-09

寫文章是一件比較麻煩的事。好處就是讓你不僅鞏固所學。還能夠更深刻地理解所學的,如果理解不好,在寫的過程中就暴露出來了。這和程式碼差不多。

圖片描述

    執行緒理解起來(在這裡,其實很難的)也不是那麼難,這裡我們完全可以將執行緒想象交通道路。每逢週末下班,或小長假時,回家路或高速上一定會堵車,想早點回家的心情都是可以理解,程式也是跑線上程上的車,如果所有的操作都跑在一個執行緒會是什麼樣,尤其在這個缺乏耐心的年頭。(圖)這個是否為了緩解交通擁堵,我們需要採取一些措施。我們需要透過調配方式或者。

圖片描述

由於 Android 對主執行緒看的很緊,小窄路,稍不留神,就ANR了。我們應用需要頻繁訪問訪問獲取資料,也可以進行操作 IO,然後將資料呈現到介面上。

RxAndroid 的確有些難於理解概念,他並不是簡單非同步回撥,如果用好了他的確是得心應手的利器

很常見就是我們在一個執行緒處理網路請求和 IO 操作。然後返回到主執行緒繪製檢視。有點像並道吧。並道比較麻煩得左右前後注意。這樣複雜的事rxandroid幫我們做了,有了他我們可以利用他提供的選擇線上程間任意穿梭。有了交警害怕堵車

背壓問題,透過一個例項給大家解釋一下。什麼是背壓。我們在螢幕上移動手指。那麼就會產生連續的觸控事件。我們獲取事件的座標資訊,來進行繪製一個點。好。問題來了,還沒有繪製完當前的點,下一個事件就來了。我們怎麼辦。這個火爆的自助餐門前一樣。這就是背壓。我們無法及時消費掉這些事件。那麼是等待還是離開就是我們對應的策略。在 rxandroid 1 的時代我們observable 在後期小版本提供對應處理。但是有些不需要處理背壓。所以在 rxandroid2有了flowable 他不是什麼新東西。就是將 observable 分離出一份專門對應背壓的。但是 flowableprocessor 這個處理器可是一個新東西。

我們先總體,看一看大致流程吧,先傳送事件(1),然後就可以訂閱事件(2),可以先於傳送前後進行訂閱事件,獲得(捕獲)訂閱的事件,處理事件(3),雖然不感興趣就取消訂閱事件(4),這就是整個流程了。

圖片描述

Observable 實現了 publiser 介面來發布事件,Observer 訂閱(subscribe) Obsrvable 釋出的事件。然後在 onNext 處理傳送過來的事件。然後在 onSubscribe 處理是否取消訂閱。這就是整個Rx的流程,

圖片描述

我們如何建立事件源頭。 多數情況我們會用到 just 和 create 來建立事件源,使用 Observable.just 方法可以建立一個事件源,這裡我們可以傳入一個字串,集合或物件。

圖片描述

range 可以建立一些列的整數。

圖片描述

我們最常用還是 create 來建立一個事件源。Observable 表示可以觀察的物件,看看語法 able(能夠被)。

圖片描述

這裡呼叫 create 方法釋出一定可觀察到事件源,這方法接受一個 ObservableOnSubscribe 物件作為引數。在java 中通常都用匿名類來實現函數語言程式設計。這裡我們分析一下語法吧,使用英文的語法,而非 code 。在這裡 subscribe 是訂閱意思,大家都清楚吧,OnSubscribe 表示訂閱的可觀察物件。我們需要來實現他的訂閱方法,方法提供以引數供我們使用,就是可以發射發射器的物件,

圖片描述

用於釋出資料,我們具體怎麼釋出資料,都是在這裡完成的。

圖片描述

多數情況我們會結合著處理網路請求。和處理 UI 例如點選,拖到等事件,包裹這些請求和事件,來優雅地實現非同步程式設計。下面例子是包裹了 okhttp 的請求。

圖片描述



作者:zidea
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2334/viewspace-2821660/,如需轉載,請註明出處,否則將追究法律責任。

相關文章