1. 程式人生 > >Android RxJava操作符的學習---過濾操作符----功能防抖

Android RxJava操作符的學習---過濾操作符----功能防抖

1. 需求場景

 

2. 功能說明

 

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次網路請求