天天看點

RxJava源代碼剖析

轉載請注明出處:何時夕的部落格

很多人想學習RxJava,但是總不知道如何下手,是以我之前總結了一篇RxJava的用法。這次我舉了一個例子,結合源碼,深入剖析了一下,RxJava運作的機制。有愛者自取啦,如果覺得我畫的圖不錯的話,可以留個言鼓勵一下,多謝!

首先我很先來看看我剖析例子的

RxJava源代碼剖析

可以看見我以一列Integer作為事件源,然後在create()中的OnSubscribe中循環發送事件item。

然後我調用了map(),裡面的邏輯是将Integer轉換成String。

然後我調用了filter(),裡面的邏輯是隻輸出含有“1”的String。

最後我輸出了所有産生的String。

如果大家對于RxJava的基本 用法有什麼不清楚的地方,可以去看我上一篇分享的關于RxJava入門的部落格。

然後我們就要進行源碼剖析了,不過我們先來看看圖中需要注意到地方。

RxJava源代碼剖析

如圖大家要記清楚這幾個線代表的含義,這樣才能看得懂後面圖中的分析。

然後要總結一句就是:RxJava的一切操作符都是基于lift()函數,是以了解了lift()函數,可以說你就已經入門了RxJava

廢話不多說上圖

RxJava源代碼剖析

代碼的解析文字都在圖中,起點是左上角的紅字"開始"。大家可以從這裡一步步深入。

推薦的閱讀方式:以粉紅色的線為主幹推進,綠色的分支為輔助。如果哪個源碼不懂,就看黑色線所連接配接的代碼解釋。看到回調之後,即紅色的線的時候,需要異常注意。最後的結束是在右下角。

注意事項: 1 代碼的運作不是按照順序來的,是以有些剖析的代碼片段我沒有寫全,而是在調用的時候寫全。

                  2 有些比較長的源碼,我精簡了隻剩必須的邏輯,是以在讀者自己進入源碼的時候,可能會發現不一樣

如果你把上面的解析仔仔細細的看了一遍,我相信你已經對RxJava已經有了比較深入的了解。

不過要玩玩全全了解的話你還需要多看幾遍,并且自己也進去看看。

接下來是最後一餐:簡略的示意圖,相信看完上面的解析,看這個還是很簡單的

RxJava源代碼剖析

最後,祝大家bug少,工資高。我之前也發過幾個圖檔解析源碼的部落格,歡迎大家觀看評論!

繼續閱讀