java 的optional api 介紹和實戰(一個工程帶你學會簡單使用RxJava)
2023-04-16 17:29:50 1
CaptainAndroid.png
寫了一個工程,大概分六個demo.java帶你學習如何使用,通熟易懂,很明顯,是我這個菜鳥寫的。
RxJava是什麼?
RxJava 在 GitHub 主頁上的自我介紹是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一個在 Java VM 上使用可觀測的序列來組成異步的、基於事件的程序的庫)。這就是 RxJava。
簡單的來說, RxJava 的本質可以壓縮為異步這一個詞。說到根上,它就是一個實現異步操作的庫,而別的定語都是基於這之上的。
RxJava的好處
簡潔、美觀
異步操作很關鍵的一點是程序的簡潔性,因為在調度過程比較複雜的情況下,異步代碼經常會既難寫也難被讀懂。 Android 的framework為我們創造的 AsyncTask 和Handler ,其實都是為了讓異步代碼更加簡潔。RxJava 的優勢也是簡潔,但它的簡潔的與眾不同之處在於,隨著程序邏輯變得越來越複雜,它依然能夠保持簡潔。
rxjava1.jpg
使用
通過閱讀以下代碼連結,會一步一步的知道RxJava是如何使用的。
個人建議把我工程拉下來看,直接運行看log比較有感覺。
工程連結:https://github.com/Jerey-Jobs/RxJavaDemos
第一章:數據的發射與接收
第一章代碼:數據的發射與接收
通過創建observable與observer
再通過 observable.subscribe(observer); 進行數據發布,實現簡單的訂閱關係。
具體見代碼。
/**
第二章:通過filter 控制篩選 通過map轉換格式
第二章代碼:通過filter 控制篩選 通過map轉換格式
通過Observable.just(1, 2, 3, 4, 5),然後使用.filter進行數據篩選 .map進行數據的格式轉換的demo。
第三章:Scheduler 線程控制
第三章代碼:Scheduler 線程控制
*
Schedulers.immediate: 直接在當前線程運行,相當於不指定線程。這是默認的 Scheduler。
Schedulers.newThread: 總是啟用新線程,並在新線程執行操作。
Schedulers.io: I/O 操作(讀寫文件、讀寫資料庫、網絡信息交互等)所使用的 Scheduler
行為模式和 newThread 差不多,區別在於 io 的內部實現是是用一個無數量上限的線程池,可以重用空閒的線程,因此多數情況下 io 比 newThread 更有效率。不要把計算工作放在 io 中,可以避免創建不必要的線程。
Schedulers.computation: 計算所使用的 Scheduler。這個計算指的是 CPU 密集型計算,即不會被 I/O 等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的線程池,大小為 CPU 核數。不要把 I/O 操作放在 computation 中,否則 I/O 操作的等待時間會浪費 CPU。
另外, Android 還有一個專用的 AndroidSchedulers.mainThread,它指定的操作將在 Android 主線程運行。
/**
public class Demo3 { public static final String TAG = "Demo3"; public static void test {
第四章:學會使用lift轉變類型
第四章代碼:學會使用lift轉變類型
第五章:學會使用Observable.Transformer 改變自身屬性
第五章代碼:學會使用Observable.Transformer 改變自身屬性
Observable.Transformer transformer = new Observable.Transformer { @Override
第六章:學會簡單使用Retrofit
第六章代碼:學會使用Retrofit
@Override
/**
了解更多網絡安全動態、乾貨、熱點資訊,請關注微信公眾號「e安在線」!
本文作者:Anderson/Jerey_Jobs
簡書地址 : Anderson大碼渣
,