android 功能防抖,Android RxJava 实际应用讲解:功能防抖
前言
Rxjava,由于其基于事件流的鏈?zhǔn)秸{(diào)用、邏輯簡潔 & 使用簡單的特點(diǎn),深受各大 Android開發(fā)者的歡迎。
Github截圖
RxJava如此受歡迎的原因,在于其提供了豐富 & 功能強(qiáng)大的操作符,幾乎能完成所有的功能需求
今天,我將為大家?guī)?Rxjava創(chuàng)建操作符的常見開發(fā)應(yīng)用場景:功能防抖需求 ,并結(jié)合Retrofit 與RxJava 實(shí)現(xiàn),希望大家會(huì)喜歡。
本系列文章主要基于 Rxjava 2.0
接下來的時(shí)間,我將持續(xù)推出 Android中 Rxjava 2.0 的一系列文章,包括原理、操作符、應(yīng)用場景、背壓等等 ,有興趣可以繼續(xù)關(guān)注Carson_Ho的安卓開發(fā)筆記!!
示意圖
目錄
示意圖
1. 需求場景
示意圖
2. 功能說明
示意圖
注:關(guān)于 Rxjava中的throttleFirst() 操作符的使用請(qǐng)看文章:Android RxJava:過濾操作符 全面講解
3. 具體實(shí)現(xiàn)
// 注冊(cè)控件
Button button;
button = (Button)findViewById(R.id.button);
/*
* 1. 此處采用了RxBinding:RxView.clicks(button) = 對(duì)控件點(diǎn)擊進(jìn)行監(jiān)聽,需要引入依賴:compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
* 2. 傳入Button控件,點(diǎn)擊時(shí),都會(huì)發(fā)送數(shù)據(jù)事件(但由于使用了throttleFirst()操作符,所以只會(huì)發(fā)送該段時(shí)間內(nèi)的第1次點(diǎn)擊事件)
**/
RxView.clicks(button)
.throttleFirst(2, TimeUnit.SECONDS) // 才發(fā)送 2s內(nèi)第1次點(diǎn)擊按鈕的事件
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
Log.d(TAG, "發(fā)送了網(wǎng)絡(luò)請(qǐng)求" );
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "對(duì)Error事件作出響應(yīng)" + e.toString());
// 獲取異常錯(cuò)誤信息
}
@Override
public void onComplete() {
Log.d(TAG, "對(duì)Complete事件作出響應(yīng)");
}
});
測試結(jié)果
在2s內(nèi),無論點(diǎn)擊多少次,也只會(huì)發(fā)送1次網(wǎng)絡(luò)請(qǐng)求
示意圖
4. Demo地址
5. 總結(jié)
本文主要講解了 Rxjava的實(shí)際開發(fā)需求場景:功能防抖需求
下面我將結(jié)合 實(shí)際場景應(yīng)用 & Rxjava的相關(guān)使用框架(如Retrofit、Eventbus) ,繼續(xù)對(duì) Android中 Rxjava 的實(shí)際開發(fā)需求場景進(jìn)行深入講解 ,感興趣的同學(xué)可以繼續(xù)關(guān)注本人運(yùn)營的Wechat Public Account:
請(qǐng)點(diǎn)贊!因?yàn)槟愕墓膭?lì)是我寫作的最大動(dòng)力!
不定期分享關(guān)于安卓開發(fā)的干貨,追求短、平、快,但卻不缺深度。
總結(jié)
以上是生活随笔為你收集整理的android 功能防抖,Android RxJava 实际应用讲解:功能防抖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php revel,golang,rev
- 下一篇: 传感器是新技术革命和当前信息社会的重要技