日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

RxJava 在Android中的应用(一)

發布時間:2025/4/16 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 使用流程

  • 創建 Observable 被觀察者
  • 初始化被觀察(訂閱)后的事件序列
  • 創建 Observer/Subscriber 觀察者/訂閱者
  • 訂閱 Subscribe
  • 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中的应用(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。