RxJava 在Android中的应用(一)
生活随笔
收集整理的這篇文章主要介紹了
RxJava 在Android中的应用(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
RxJava 在Android中的應用
- RxJava 是什么, 能解決什么問題
- 對比其他技術理解為什么要選擇RxJava
- RxJava的相關API
- RxJava在Android中的典型使用場景
- RxJava在Android中與其他框架的融合
RxJava 是什么, 能解決什么問題
github官方介紹:
a library for composing asynchronous and event-based programs by using observable sequences.
一個在運行在Java VM上的庫, 通過可觀測的序列來組成異步的、基于事件的程序。解決問題:
讓復雜的程序邏輯回歸簡單、清晰
RxJava 的四個基本概念:
- Observable (可觀察者/被觀察者)
- Observer (觀察者/訂閱者)
- subscribe (訂閱)
- Event (事件)
如何使用
build.gradle引入依賴
compile 'io.reactivex:rxandroid:1.2.0' compile 'io.reactivex:rxjava:1.1.4'源碼地址
https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid
對比其他技術理解為什么要選擇RxJava
Observable(被觀察者) 和Subscriber(訂閱者) 可以做任何事情
- Observable可以是一個網絡請求,Subscriber來顯示請求結果;
- Observable可以是一個數據庫查詢,Subscriber來顯示查詢結果;
- Observable可以是按鈕點擊事件,Subscriber來響應點擊事件;
- Observable可以是大圖片文件的加載解析, Subscriber來展示解析后的圖片。
RxJava的相關API
Observable 可觀察者/被觀察者
Observer/Subscriber (觀察者/訂閱者)
操作符(Operators)(常用的)
- map 轉換對象
- flatMap 平鋪對象
- filter 過濾
- distinct 去重復(獨特的)
- take 從開始取出固定個數
- doOnNext 輸出元素之前的額外操作
- toList 打包對象為集合
Scheduler 調度器, 用于線程控制
- Schedulers.immediate() 默認線程
- Schedulers.newThread() 每次都創建新的線程執行
- Schedulers.io() 包含線程池的機制, 線程個數無限, 可以復用空閑線程
- Schedulers.computation() CPU密集計算線程, 線程池線程數和CPU數一致.處理圖形運算
- AndroidSchedulers.mainThread() Android更新界面的UI主線程
subscribeOn 可執行多次, 切換操作符的線程
- observeOn 只需要執行一次, 指定訂閱者執行的線程
添加java8的lambda支持
參見: https://github.com/evant/gradle-retrolambda
RxJava 使用流程
RxJava在Android中的典型使用場景
- Scheduler線程切換
- 定時任務 timer
- 周期任務 interval
- 合并多個請求 merge
- 防止連續點擊 throttleFirst
- 解決回調嵌套Callback hell, flatMap
- 其他…
RxJava在Android中與其他框架的融合 (了解)
RxBinding: https://github.com/JakeWharton/RxBinding
//添加依賴 compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'// 相關代碼 Button button = (Button)findViewById(R.id.bt); RxView.clickEvents(button) // 設置點擊事件.subscribe(new Action1<ViewClickEvent>() {@Overridepublic void call(ViewClickEvent event) {// Click handling}});Retrofit: https://github.com/square/retrofit
// 添加依賴 compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'// 相關代碼 new Retrofit.Builder().baseUrl("http://192.168.1.113:8080/").addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create()).build().create(RxDemoApi.class);
總結
以上是生活随笔為你收集整理的RxJava 在Android中的应用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android CardView 开发过
- 下一篇: RxJava 在Android中的应用(