編輯:關於Android編程
RxJava 在 Android 應用開發中越來越流行,但是由於其門檻稍高,初次使用不免遇到很多問題,例如在 RxJava 常見的錯誤用法 和 不該使用 RxJava 的一些情況 中所描述的情況。為了避免這些常見的問題,很多民間高手開發了很多在 Android 應用中可以使用的 Rx 擴展類庫,組合使用這些類庫,可以更方便的使用 RxJava 並且可以避免一些常見的錯誤用法。 本文來介紹一些使用 RxJava 必備的擴展庫。
RxAndroid 這個就毫無疑問了, Android 開發中使用 RxJava 必備元素,雖然裡面只是提供了簡單的兩個功能。 AndroidSchedulers.mainThread() 和 AndroidSchedulers.handlerThread(handler) ,但這確是 Android 開發中最核心的功能之一。
RxBinding 是把 Android 中各種 UI 控件的事件轉換為 RxJava 中的數據流。這樣就可以把 UI 控件的事件當做 RxJava 中的數據流來使用了。 比如 View 的 onClick 事件,使用 RxView.clicks(view) 即可獲取到一個 Observable 對象,每當用戶點擊這個 View 的時候,該 Observable 對象就發射一個事件(onNext 被調用), Observable 的 Observer 訂閱者就可以通過 onNext 回調知道用戶點擊了 View。
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。 這樣就不用自己手動管理了。
現在幾乎大部分的 Android 應用都需要請求網絡獲取數據,而 Retrofit 就是用來簡化網絡請求的一個庫,並且支持 RxJava。比如:
@GET("/users/{user}") Observableuser(@Path("user") String user);
上面的代碼定義了一個 GET 請求,請求的路徑是 /users/{user}並且帶有一個用戶名的參數。 返回的結果為 一個 Observable 。 這樣配合前面的 RxBinding,就可以很容易的實現一個 用戶點擊一個刷新按鈕去請求服務器數據的操作。
RxView.clicks(view).flatMap(v -> githubService.user(user)).subscribe();
如果您的應用使用了 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 庫。
一、 實現拍照、選擇圖片並裁剪圖片效果按照之前博客的風格,首先看下實現效果。 二、 uCrop項目應用想起之前看到的Yalantis/
前言之前因為項目需求,其中使用到了圖片的單擊顯示取消,圖片平移縮放功能,昨天突然想再加上圖片的旋轉功能,在網上看了很多相關的例子,可是沒看到能同時實現我想要的
本文實例為大家分享了Android自定義Behavior支持所有View ,供大家參考,具體內容如下一、實現效果圖這個右下角的FAB,動畫當然可以多種多樣,可以放在界面的
首先看不正常的圖,點擊tracing_dialog按鈕彈出對話框然後看理論上的效果圖觀察兩張圖發現,不正常的圖最上方被狀態欄遮擋住了,而該問題存在於android4.4版