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專案
相關文章
- appium 安卓應用指令碼APP安卓指令碼
- .NET MAUI 安卓應用開發初體驗UI安卓
- 【Java併發】【AQS鎖】鎖在原始碼中的應用JavaAQS原始碼
- 安卓初級開發教程 ppt+視訊+案例原始碼安卓原始碼
- [譯] 在 Android Instant App(安卓即時應用程式)中啟用 ProGuard (混淆)AndroidAPP安卓
- RxJava小考題 -- Rxjava原始碼分析(一)RxJava原始碼
- 安卓應用安全指南 5.6.1 密碼學 示例程式碼安卓密碼學
- [譯] 安卓應用和遊戲的無障礙開發介紹安卓遊戲
- RxJava + Retrofit原始碼解析RxJava原始碼
- Kotlin 初體驗(引) 用kotlin開發安卓Kotlin安卓
- Flutter跨應用更改狀態在安卓端的實現Flutter安卓
- Flutter 如何釋出安卓應用?Flutter安卓
- 安卓開發--AIDL研究安卓AI
- 探討敏捷開發在軟體開發中的應用敏捷
- 在零程式碼開發平臺上如何開發應用程式
- 從DoorDash安卓應用中學到的8個技巧安卓
- 安卓開發中RecycleView簡單使用步驟安卓View
- 原始碼開放:WebSocket應用示例原始碼Web
- 安卓開發框架系列開篇安卓框架
- RxJava2原始碼分析RxJava原始碼
- 10章 RxJava原始碼分析RxJava原始碼
- 短影片直播原始碼開源安卓java蘋果OC功能完善可二次開發原始碼安卓Java蘋果
- 在 Linux 上安裝安卓 8.1 Oreo 來執行應用程式和遊戲Linux安卓遊戲
- 7款最佳安卓日曆應用安卓
- 安卓應用安全指南翻譯完成安卓
- Telegram原始碼之安卓客戶端配置原始碼安卓客戶端
- 安卓開發日記4安卓
- go語言安卓開發Go安卓
- 安卓開發日記28安卓
- 安卓開發日記27安卓
- 安卓開發日記14安卓
- 安卓開發日記13安卓
- 安卓開發日記12安卓
- 安卓開發日記17安卓
- 安卓開發日記16安卓
- 安卓開發日記15安卓
- 安卓開發日記26安卓
- 安卓開發日記25安卓
- 安卓開發日記24安卓