按钮快速点击过滤处理

来源:互联网 发布:9分达人阅读 知乎 编辑:程序博客网 时间:2024/05/21 09:25

用户可能会快速的点击按钮, 为了避免快速点击引起不必要的逻辑错误, 我们需记下第一次按下的时间, 等下次用户再点击的时候, 进行时间比对, 如果时间差值大于阈值, 那么才会响应事件, 否则过滤事件

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 点击事件具体的处理代码        ...}
阅读全文
0 0