Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> RxJava Android(RxAndroid) 開發全家桶

RxJava Android(RxAndroid) 開發全家桶

編輯:關於Android編程

RxJava 在 Android 應用開發中越來越流行,但是由於其門檻稍高,初次使用不免遇到很多問題,例如在 RxJava 常見的錯誤用法 和 不該使用 RxJava 的一些情況 中所描述的情況。為了避免這些常見的問題,很多民間高手開發了很多在 Android 應用中可以使用的 Rx 擴展類庫,組合使用這些類庫,可以更方便的使用 RxJava 並且可以避免一些常見的錯誤用法。 本文來介紹一些使用 RxJava 必備的擴展庫。

RxAndroid

RxAndroid 這個就毫無疑問了, Android 開發中使用 RxJava 必備元素,雖然裡面只是提供了簡單的兩個功能。 AndroidSchedulers.mainThread() 和 AndroidSchedulers.handlerThread(handler) ,但這確是 Android 開發中最核心的功能之一。

RxBinding

RxBinding 是把 Android 中各種 UI 控件的事件轉換為 RxJava 中的數據流。這樣就可以把 UI 控件的事件當做 RxJava 中的數據流來使用了。 比如 View 的 onClick 事件,使用 RxView.clicks(view) 即可獲取到一個 Observable 對象,每當用戶點擊這個 View 的時候,該 Observable 對象就發射一個事件(onNext 被調用), Observable 的 Observer 訂閱者就可以通過 onNext 回調知道用戶點擊了 View。

RxLifecycle

RxLifecycle 配合 Activity/Fragment 生命周期來管理訂閱的。 由於 RxJava Observable 訂閱後(調用 subscribe 函數),一般會在後台線程執行一些操作(比如訪問網絡請求數據),當後台操作返回後,調用 Observer 的 onNext 等函數,然後在 更新 UI 狀態。 但是後台線程請求是需要時間的,如果用戶點擊刷新按鈕請求新的微博信息,在刷新還沒有完成的時候,用戶退出了當前界面返回前面的界面,這個時候刷新的 Observable 如果不取消訂閱,則會導致之前的 Activity 無法被 JVM 回收導致內存洩露。 這就是 Android 裡面的生命周期管理需要注意的地方,RxLifecycle 就是用來干這事的。比如下面的示例:

myObservable
    .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
    .subscribe();

在 Activity 銷毀的時候, RxLifecycle 會自動取消訂閱這個 Observer。 這樣就不用自己手動管理了。

Retrofit

現在幾乎大部分的 Android 應用都需要請求網絡獲取數據,而 Retrofit 就是用來簡化網絡請求的一個庫,並且支持 RxJava。比如:

    @GET("/users/{user}")
    Observable user(@Path("user") String user);

上面的代碼定義了一個 GET 請求,請求的路徑是 /users/{user}並且帶有一個用戶名的參數。 返回的結果為 一個 Observable 。 這樣配合前面的 RxBinding,就可以很容易的實現一個 用戶點擊一個刷新按鈕去請求服務器數據的操作。
RxView.clicks(view).flatMap(v -> githubService.user(user)).subscribe();

SqlBrite

如果您的應用使用了 Sqlite 來保存數據的話,則 SqlBrite 是個很好的配合 RxJava 使用的庫。

除了上面這些主要的類庫外,還有一些封裝其他 Android 服務的庫:

Rx Preferences 通過 RxJava 的方式來訪問 SharedPreferences。 RxPermissions 用於支持 Android M 動態權限申請的庫。

還有一些配合 Google Play Service 服務的庫:

RxFit 封裝了 Fitness API 的調用。 RxNotification 封裝了 firebase 通知 api。 Android-ReactiveLocation 封裝了 Google Play Service API 中和位置相關的 api。

如果您要是開發 Android Wear 應用的話,會使用到 Wearable API 來實現手表和手機直接的數據通信,則可以使用 RxWear 庫。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved