RxJava在安卓開發中應用原始碼
Reactive系統是反覆被外界提示,持續的不斷地對外部輸出給與響應,類似命令列操作一樣,有一個提示符等待你輸入,只要輸入無論對錯總是給予響應。
RX-GDG是一個基於安卓的響應式程式設計的開源案例,文件見frp-android。
在安卓中每天我們經常遭遇網路 資料庫和檔案系統以及各種裝置狀態,使用者輸入等等,這些操作經常是依賴的比如Network -> DB -> UI,這種工作不能在UI執行緒中進行,因為執行緒的上下文切換成本是昂貴的。
基於函式的響應式程式設計FRP改變我們傳統思路,比如迭代思考,從一個陣列中獲取資料傳統思路如下:
for (Integer number : numbers) { // Do some work } <p class="indent"> |
而使用FRP,我們對這個數字進行觀察,等它有資料通知我們後,我們再採取行動,如下:
Observable.from(numbers) .subscribe({ num -> // Do some work }) <p class="indent"> |
這種觀察者API類似安卓的動畫API:
view.animate() .x(10) .y(10) .duration(1000) .start(); <p class="indent"> |
FRP可以進行操作組合。
下面是不使用FRP,純粹的回撥函式巢狀,回撥地獄:
apiService.login({ apiService.getUserData({ dbService.saveUserData({ uiThread.updateUI({ }) }) }) }); <p class="indent"> |
使用FRP以後解決回撥巢狀地獄了:
apiService.login() //Background thread .getUserData() //Background thread .saveUserData() //Background thread .subscribe(Subscriber { //UI thread void onComplete(){} void onError(Exception e){} void onNext(Object o){} }); <p class="indent"> |
更完整的原始碼點選標題進入GitHub專案
相關文章
- 在安卓開發中開始應用NFC安卓
- 安卓開發:應用間通訊模式安卓模式
- 類簇在iOS開發中的應用iOS
- 探討敏捷開發在軟體開發中的應用敏捷
- .NET MAUI 安卓應用開發初體驗UI安卓
- RxJava原始碼初探RxJava原始碼
- Runtime在實際開發中的應用
- “自釋放”在iOS開發中的應用iOS
- RxJava小考題 -- Rxjava原始碼分析(一)RxJava原始碼
- SAP高階應用開發一書原始碼包原始碼
- 在零程式碼開發平臺上如何開發應用程式
- 企業應用開發和開放原始碼專案 (轉)原始碼
- 開發更安全的安卓應用要注意哪些?安卓
- 十大開源安卓應用程式的開發框架安卓框架
- TypeScript 在開發應用中的實踐總結TypeScript
- 正規表示式在iOS開發中的應用iOS
- 在軟體開發中應用80:20原則
- 在Lotus Notes 8 中開發複合應用
- 在 Lotus Notes 8 中開發複合應用
- RxJava + Retrofit原始碼解析RxJava原始碼
- appium 安卓應用指令碼APP安卓指令碼
- 安卓初級開發教程 ppt+視訊+案例原始碼安卓原始碼
- 行為驅動開發在 Python 開發測試中的應用Python
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- 前沿探索|AI 在 API 開發測試中的應用AIAPI
- Docker在PHP專案開發環境中的應用DockerPHP開發環境
- rss在web開發過程中的全方位應用Web
- 構件技術在MIS開發中的應用(轉)
- MultiRow發現之旅(六)- 使用MultiRow開發票據應用(附原始碼)原始碼
- 10章 RxJava原始碼分析RxJava原始碼
- RxJava2原始碼分析RxJava原始碼
- RxJava原始碼解析(一)從一個例子開始RxJava原始碼
- 淺談canvas在web開發中的應用與優化CanvasWeb優化
- JSON資料格式及其在WEB開發中的應用JSONWeb
- silverlight 在企業應用開發中的定位
- 在Delphi中開發使用多顯示器的應用程式
- Web開發中很實用的10個效果【附原始碼】Web原始碼
- [譯] 在 Android Instant App(安卓即時應用程式)中啟用 ProGuard (混淆)AndroidAPP安卓