android 功能防抖,Android 功能防抖

android 功能防抖,Android 功能防抖功能防抖理解的意思是防止短时间内多次点击或者输入导致的重复请求。常见情景1.Activity跳转,我们一般用Button写onClick监听然后跳转,如果你的目标Activity的启动模式为默认,会出现多次创建目标activity问题。2.单控件多次点击请求网络数据。3.多控件的组合防抖,只取最后一次请求。4.搜索功能,数据量大的时候会出现卡顿现象,例如在EditText中输入车牌号进行查询,我们…

大家好,欢迎来到IT知识分享网。android 功能防抖,Android 功能防抖

功能防抖

理解的意思是防止短时间内多次点击或者输入导致的重复请求。

常见情景

1.Activity跳转,我们一般用Button写onClick监听然后跳转,如果你的目标Activity的启动模式为默认,会出现多次创建目标activity问题。

2.单控件多次点击请求网络数据。

3.多控件的组合防抖,只取最后一次请求。

4.搜索功能,数据量大的时候会出现卡顿现象,例如在EditText中输入车牌号进行查询,我们会在onTextChanged中监听输入,如果不做防抖限制,会输入一个字符请求后台一次然后拿到数据刷新列表数据,一步一卡顿。

解决方法

1.跳转问题,可以利用时间判断,记录第一次点击的时间,第二次点击的时间和第一次点击的时间间隔小于预设值,则不处理。这种方法有个小问题,多次点击的时候如果不添加加载对话框,会有卡顿时间,主要看目标Activity的初始化时间。

public abstract class StaticListener implements View.OnClickListener {

private static long lastTimeMillis;

private static final long MIN_CLICK_INTERVAL = 1000;

protected boolean isTimeEnabled() {

long currentTimeMillis = System.currentTimeMillis();

if ((currentTimeMillis – lastTimeMillis) > MIN_CLICK_INTERVAL) {

lastTimeMillis = currentTimeMillis;

return true;

}

return false;

}

}

2.单控件重复点击,可以利用Rxjava的throttleFirst操作符设置请求过滤,它只会放出每个时间段内的第一个对象。还有种做法是添加状态码或者对按钮enable功能设置,在请求之前写入不可点击状态,请求的返回(出错返回和成功返回)里恢复可点击状态。

3.多控件组合防抖,看了一篇文章是对需要的组合控件全部缓存监听,取时间段内的最后一个监听事件即可。

4.利用handler,handler可以设置消息tag,可以延时发送消息,就是在 延时的时间内,再次触发会移除之前要发送的消息,然后重新发送消息,直到用户不触发了,等 延时时间到了,消息就会发送出去了,在做处理即可。

参考文章:1.https://blog.csdn.net/qq_17766199/article/details/51441968

2.https://mp.weixin.qq.com/s/2KZbpGlVheeRriItrKGMng

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22822.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信