天天看點

android 功能防抖,Android RxJava 實際應用講解:功能防抖

android 功能防抖,Android RxJava 實際應用講解:功能防抖

前言

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

android 功能防抖,Android RxJava 實際應用講解:功能防抖

Github截圖

RxJava如此受歡迎的原因,在于其提供了豐富 & 功能強大的操作符,幾乎能完成所有的功能需求

今天,我将為大家帶來 Rxjava建立操作符的常見開發應用場景:功能防抖需求 ,并結合Retrofit 與RxJava 實作,希望大家會喜歡。

本系列文章主要基于 Rxjava 2.0

接下來的時間,我将持續推出 Android中 Rxjava 2.0 的一系列文章,包括原理、操作符、應用場景、背壓等等 ,有興趣可以繼續關注Carson_Ho的安卓開發筆記!!

android 功能防抖,Android RxJava 實際應用講解:功能防抖

示意圖

目錄

android 功能防抖,Android RxJava 實際應用講解:功能防抖

示意圖

1. 需求場景

android 功能防抖,Android RxJava 實際應用講解:功能防抖

示意圖

2. 功能說明

android 功能防抖,Android RxJava 實際應用講解:功能防抖

示意圖

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

3. 具體實作

// 注冊控件

Button button;

button = (Button)findViewById(R.id.button);

RxView.clicks(button)

.throttleFirst(2, TimeUnit.SECONDS) // 才發送 2s内第1次點選按鈕的事件

.subscribe(new Observer() {

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

android 功能防抖,Android RxJava 實際應用講解:功能防抖

示意圖

4. Demo位址

5. 總結

本文主要講解了 Rxjava的實際開發需求場景:功能防抖需求

下面我将結合 實際場景應用 & Rxjava的相關使用架構(如Retrofit、Eventbus) ,繼續對 Android中 Rxjava 的實際開發需求場景進行深入講解 ,感興趣的同學可以繼續關注本人營運的Wechat Public Account:

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

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

android 功能防抖,Android RxJava 實際應用講解:功能防抖