Rxjava入門

RxJava是函數響應式編程思想在java語言上的具體實現。RxJava2在這一實現下,對Rxjava1進行了全面重寫,如果之前沒接觸過RxJava,可以直接從Rxjava2入門,而不需要了解RxJava1。
在使用RxJava2之前,對於Android開發,需要在項目中添加以下依賴

implementation "io.reactivex.rxjava2:rxjava:2.1.3"
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

函數響應式編程是函數式編程和響應式編程這兩大顛覆傳統的牛逼編程範式疊加後的產物,編程界的牛逼二次方。

響應式編程(Reactive Programming):是一種面向數據流和變化傳播的一種編程範式。
響應式編程的終極思想,一切皆流(everything is stream)。如同面向對象的編程一切皆對象一樣。根據唯物辯證法的思想,物質世界是普遍聯繫和不斷運動變化的統一整體,而一切‘運動變化’這一‘客觀現象’都可以通過數據流的方式進行‘抽象描述’,也可以說,物質世界是數據流的客觀存在。
在程序中一切變量,數組,集合,對象,事件都可以當做數據流來發送處理。

函數式編程(Functional programming):是一種通過函數或者函數的組合調用來處理數據,獲取結果的一種編程範式。
函數是函數式編程的核心,純函數和高階函數是兩大重要的角色。
純函數具有相互獨立性和對外封閉性特點,
1、純函數的返回結果只受函數參數的影響,如果輸入參數相同不論在哪調用,何時調用,調用多少次其輸出結果都是一樣的。
2、純函數內部的數據處理不受外部環境的影響也不會影響外部環境,每一個函數內部均有一套屬於自己的局部變量,只在本函數內部調用也只在本函數內部起作用,其取值由函數的初始參數決定,不受外部變量的影響,同時函數的計算結果隻影響函數的返回值,不影響外部變量的值。
高階函數(Higher-order function):允許將函數作爲參數傳入,或者將函數作爲返回值返回的函數稱爲高階函數。通過高階函數可以對純函數進行傳遞,組合,鏈接等操作來解決單一函數無法解決的複雜問題。

函數響應式編程(Functional Reactive Programming:FRP):是一種通過一系列函數的組合調用來發射,轉變,監聽,響應數據流的編程範式。
在RxJava中,函數響應式編程具體表現爲一個觀察者(Observer)訂閱一個可觀察對象(Observable),通過創建可觀察對象發射數據流,經過一系列操作符(Operators)加工處理和線程調度器(Scheduler)在不同線程間的轉發,最後由觀察者接受並做出響應的一個過程。
在RxJava2中,提供了五對觀察者模式組合來完成這一系列的過程,每一對組合依靠其可調用的一系列函數的差異,而具有各自的特點。
這五類組合(前爲可觀察對象後爲對應的觀察者)分別是:
ObservableSource/Observer
可通過onNext方法發送單條數據或者數據序列,通過onComplete發送完成通知或通過onError發送異常通知,不支持背壓策略。
Publisher/Subscriber
在ObservableSource/Observer基礎上進行了改進,可通過背壓策略處理背壓問題,但效率沒有第一組高。
以下三組是新的響應式關係的實現,在Rxjava1中沒有,可看做是ObservableSource/Observer的簡化版
SingleSource/SingleObserver
不能發送數據序列或完成通知,只能通過onSuccess方法發送單條數據,或者通過onError發送異常通知
CompletableSource/CompletableObserve
不能發送任何形式的數據(單條數據或數據序列),只能通過onComplete發送完成通知或者通過onError發送異常通知
MaybeSource/MaybeObserver
可通過onSuccess發送單條數據,通過onComplete發送完成通知或者通過onError發送一條異常通知

後續請查看簡書

作者:馮豐楓
鏈接:https://www.jianshu.com/p/15b2f3d7141a
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章