前言
-
Rxjava
,由于其基于事件流的鏈式調用、邏輯簡潔 & 使用簡單的特點,深受各大Android
開發者的歡迎。
如果還不了解RxJava,請看文章:Android:這是一篇 清晰 & 易懂的Rxjava 入門教程
-
RxJava
如此受歡迎的原因,在于其提供了豐富 & 功能強大的操作符,幾乎能完成所有的功能需求 - 今天,我將為大家帶來
Rxjava
創建操作符的常見開發應用場景:功能防抖需求 ,并結合Retrofit
與RxJava
實現,希望大家會喜歡。
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的簡書
不定期分享關于安卓開發的干貨,追求短、平、快,但卻不缺深度。