Android RxJava應用:功能防抖

前言

  • Rxjava,由于其基于事件流的鏈式調用、邏輯簡潔 & 使用簡單的特點,深受各大 Android開發者的歡迎。

如果還不了解RxJava,請看文章:Android:這是一篇 清晰 & 易懂的Rxjava 入門教程

  • RxJava如此受歡迎的原因,在于其提供了豐富 & 功能強大的操作符,幾乎能完成所有的功能需求
  • 今天,我將為大家帶來 Rxjava創建操作符的常見開發應用場景:功能防抖需求 ,并結合RetrofitRxJava 實現,希望大家會喜歡。

Carson帶你學RxJava系列文章,包括 原理、操作符、應用場景、背壓等等,請關注看文章:Android:這是一份全面 & 詳細的RxJava學習指南


目錄

示意圖

1. 需求場景

示意圖

2. 功能說明

示意圖

注:關于 Rxjava中的throttleFirst() 操作符的使用請看文章:Android RxJava:過濾操作符 全面講解


3. 具體實現

// 注冊控件
        Button button;
        button = (Button)findViewById(R.id.button);

        /*
         * 1. 此處采用了RxBinding:RxView.clicks(button) = 對控件點擊進行監聽,需要引入依賴:compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
         * 2. 傳入Button控件,點擊時,都會發送數據事件(但由于使用了throttleFirst()操作符,所以只會發送該段時間內的第1次點擊事件)
         **/
        RxView.clicks(button)
                .throttleFirst(2, TimeUnit.SECONDS)  // 才發送 2s內第1次點擊按鈕的事件
                .subscribe(new Observer<Object>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }
                    @Override
                    public void onNext(Object value) {
                        Log.d(TAG, "發送了網絡請求" );
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "對Error事件作出響應" + e.toString());
                        // 獲取異常錯誤信息
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "對Complete事件作出響應");
                    }
                });
  • 測試結果
    2s內,無論點擊多少次,也只會發送1次網絡請求
    示意圖

4. Demo地址

Carson_Ho的Github地址 = RxJava2實戰系列:功能防抖


5. 總結

  • 本文主要講解了 Rxjava的實際開發需求場景:功能防抖需求
  • Carson帶你學RxJava系列文章:

入門
Carson帶你學Android:這是一篇清晰易懂的Rxjava入門教程
Carson帶你學Android:面向初學者的RxJava使用指南
Carson帶你學Android:RxJava2.0到底更新了什么?
原理
Carson帶你學Android:圖文解析RxJava原理
Carson帶你學Android:手把手帶你源碼分析RxJava
使用教程:操作符
Carson帶你學Android:RxJava操作符教程
Carson帶你學Android:RxJava創建操作符
Carson帶你學Android:RxJava功能性操作符
Carson帶你學Android:RxJava過濾操作符
Carson帶你學Android:RxJava組合/合并操作符
Carson帶你學Android:RxJava變換操作符
Carson帶你學Android:RxJava條件/布爾操作符
實戰
Carson帶你學Android:什么時候應該使用Rxjava?(開發場景匯總)
Carson帶你學Android:RxJava線程控制(含實例講解)
Carson帶你學Android:圖文詳解RxJava背壓策略
Carson帶你學Android:RxJava、Retrofit聯合使用匯總(含實例教程)
Carson帶你學Android:優雅實現網絡請求嵌套回調
Carson帶你學Android:網絡請求輪詢(有條件)
Carson帶你學Android:網絡請求輪詢(無條件)
Carson帶你學Android:網絡請求出錯重連(結合Retrofit)
Carson帶你學Android:合并數據源
Carson帶你學Android:聯想搜索優化
Carson帶你學Android:功能防抖
Carson帶你學Android:從磁盤/內存緩存中獲取緩存數據
Carson帶你學Android:聯合判斷


歡迎關注Carson_Ho的簡書

不定期分享關于安卓開發的干貨,追求短、平、快,但卻不缺深度


請點贊!因為你的鼓勵是我寫作的最大動力!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容