按钮防止重复点击 java_Rxjava操作符飙车系列(二)防止按钮重复点击

button按钮防抖操作,防连续点击

百度关键词联想,在一段时间内只联想一次,防止频繁请求服务器

如果不用Rxjava,我们也可以很方便的实现,例如

private long lastTime=0;

@OnClick(R.id.button)

public void onViewClicked() {

//常规方式

long currTime=System.currentTimeMillis();

if (lastTime-currTime>500){

//进行相关的操作

}

lastTime=currTime;

}

那么用Rxjava如何实现呢,这里我们用到一个操作符

ThrottleFirst:

98f465f19814

ThrottleFirst

可以看到在图的末尾最后一段,ThrottleFirst 和Sample是类似的,Sample是在周期内进行发射,ThrottleFirst 设置一个时间长度,之后它会发送固定时间长度内的第一个事件,而屏蔽其他事件在间隔达到设置的时间后,可以在发送下一个事件。

狗子上代码

给大家推荐一下大神写的

RxView.clicks(button)

// .sample(1,TimeUnit.SECONDS)

.throttleFirst(3, TimeUnit.SECONDS)//在一秒内只取第一次点击

.subscribe(new Consumer() {

@Override

public void accept(Object o) throws Exception {

Toast.makeText(ButtonActivity.this,"狗子",Toast.LENGTH_SHORT).show();

}

});

科普一个Rxbing的小栗子:

例如,用户登录界面,勾选同意隐私协议,登录按钮就变高亮哦

RxCompoundButton.checkedChanges( checkBox )

.subscribe(new Action1() {

@Override

public void call(Boolean aBoolean) {

button.setEnabled( aBoolean );

button.setBackgroundResource( aBoolean ? R.color.button_yes : R.color.button_no );

}

}) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值