概述
用户可能会快速的点击按钮, 为了避免快速点击引起不必要的逻辑错误, 我们需记下第一次按下的时间, 等下次用户再点击的时候, 进行时间比对, 如果时间差值大于阈值, 那么才会响应事件, 否则过滤事件
private static long sLastTime;
public static synchronized boolean isProcessing() {
return isProcessing(300);
}
/**
* 是否处于执行任务状态,若不是,则设接下来[minTime]ms 为执行任务状态
* @param minTime 任务执行时长
* @return 是否处于执行任务状态
*/
public static synchronized boolean isProcessing(final long minTime) {
long newTime = calcTime(minTime, sLastTime);
if (newTime == sLastTime) {
return true;
} else {
sLastTime = newTime;
return false;
}
}
/**
* 下次任务执行到的时间戳
*/
private static synchronized long calcTime(final long minTime, long lastTime) {
if (SystemClock.elapsedRealtime() >= lastTime) {
return SystemClock.elapsedRealtime() + minTime;
}
return lastTime;
}
当按钮发生点击事件时, 我们可以使用以下方法进行处理:
public void onClick(View v) {
if (isProcessing()) {
return;
}
// TODO 点击事件具体的处理代码
...
}
最后
以上就是温婉皮皮虾为你收集整理的按钮快速点击过滤处理的全部内容,希望文章能够帮你解决按钮快速点击过滤处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复