前言
-
Rxjava
次和,由于其基于事件流的鏈?zhǔn)秸{(diào)用反肋、邏輯簡潔 & 使用簡單的特點(diǎn)那伐,深受各大Android
開發(fā)者的歡迎疫铜。
如果還不了解RxJava讼油,請看文章:Android:這是一篇 清晰 & 易懂的Rxjava 入門教程
-
RxJava
如此受歡迎的原因晾剖,在于其提供了豐富 & 功能強(qiáng)大的操作符抹沪,幾乎能完成所有的功能需求 - 今天齿风,我將為大家?guī)?
Rxjava
創(chuàng)建操作符的常見開發(fā)應(yīng)用場景:功能防抖需求 和二,并結(jié)合Retrofit
與RxJava
實(shí)現(xiàn)先较,希望大家會喜歡洞就。
Carson帶你學(xué)RxJava系列文章棍厌,包括 原理肾胯、操作符、應(yīng)用場景耘纱、背壓等等敬肚,請關(guān)注看文章:Android:這是一份全面 & 詳細(xì)的RxJava學(xué)習(xí)指南
目錄
1. 需求場景
2. 功能說明
注:關(guān)于 Rxjava
中的throttleFirst()
操作符的使用請看文章:Android RxJava:過濾操作符 全面講解
3. 具體實(shí)現(xiàn)
// 注冊控件
Button button;
button = (Button)findViewById(R.id.button);
/*
* 1. 此處采用了RxBinding:RxView.clicks(button) = 對控件點(diǎn)擊進(jìn)行監(jiān)聽,需要引入依賴:compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
* 2. 傳入Button控件束析,點(diǎn)擊時(shí)艳馒,都會發(fā)送數(shù)據(jù)事件(但由于使用了throttleFirst()操作符,所以只會發(fā)送該段時(shí)間內(nèi)的第1次點(diǎn)擊事件)
**/
RxView.clicks(button)
.throttleFirst(2, TimeUnit.SECONDS) // 才發(fā)送 2s內(nèi)第1次點(diǎn)擊按鈕的事件
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
Log.d(TAG, "發(fā)送了網(wǎng)絡(luò)請求" );
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "對Error事件作出響應(yīng)" + e.toString());
// 獲取異常錯(cuò)誤信息
}
@Override
public void onComplete() {
Log.d(TAG, "對Complete事件作出響應(yīng)");
}
});
- 測試結(jié)果
在2s
內(nèi)员寇,無論點(diǎn)擊多少次弄慰,也只會發(fā)送1次網(wǎng)絡(luò)請求
示意圖
4. Demo地址
Carson_Ho的Github地址 = RxJava2實(shí)戰(zhàn)系列:功能防抖
5. 總結(jié)
- 本文主要講解了
Rxjava
的實(shí)際開發(fā)需求場景:功能防抖需求 - Carson帶你學(xué)RxJava系列文章:
入門
Carson帶你學(xué)Android:這是一篇清晰易懂的Rxjava入門教程
Carson帶你學(xué)Android:面向初學(xué)者的RxJava使用指南
Carson帶你學(xué)Android:RxJava2.0到底更新了什么?
原理
Carson帶你學(xué)Android:圖文解析RxJava原理
Carson帶你學(xué)Android:手把手帶你源碼分析RxJava
使用教程:操作符
Carson帶你學(xué)Android:RxJava操作符教程
Carson帶你學(xué)Android:RxJava創(chuàng)建操作符
Carson帶你學(xué)Android:RxJava功能性操作符
Carson帶你學(xué)Android:RxJava過濾操作符
Carson帶你學(xué)Android:RxJava組合/合并操作符
Carson帶你學(xué)Android:RxJava變換操作符
Carson帶你學(xué)Android:RxJava條件/布爾操作符
實(shí)戰(zhàn)
Carson帶你學(xué)Android:什么時(shí)候應(yīng)該使用Rxjava蝶锋?(開發(fā)場景匯總)
Carson帶你學(xué)Android:RxJava線程控制(含實(shí)例講解)
Carson帶你學(xué)Android:圖文詳解RxJava背壓策略
Carson帶你學(xué)Android:RxJava陆爽、Retrofit聯(lián)合使用匯總(含實(shí)例教程)
Carson帶你學(xué)Android:優(yōu)雅實(shí)現(xiàn)網(wǎng)絡(luò)請求嵌套回調(diào)
Carson帶你學(xué)Android:網(wǎng)絡(luò)請求輪詢(有條件)
Carson帶你學(xué)Android:網(wǎng)絡(luò)請求輪詢(無條件)
Carson帶你學(xué)Android:網(wǎng)絡(luò)請求出錯(cuò)重連(結(jié)合Retrofit)
Carson帶你學(xué)Android:合并數(shù)據(jù)源
Carson帶你學(xué)Android:聯(lián)想搜索優(yōu)化
Carson帶你學(xué)Android:功能防抖
Carson帶你學(xué)Android:從磁盤/內(nèi)存緩存中獲取緩存數(shù)據(jù)
Carson帶你學(xué)Android:聯(lián)合判斷
歡迎關(guān)注Carson_Ho的簡書
不定期分享關(guān)于安卓開發(fā)的干貨,追求短扳缕、平慌闭、快恶守,但卻不缺深度。