自定义单击侦听器可防止多次快速单击

为了防止按钮在短时间内多次触发 (假设在 1 秒内发生 2 次点击,如果流量不受控制可能会导致严重问题),可以实现自定义 SingleClickListener

此 ClickListener 将特定时间间隔设置为阈值(例如,1000 毫秒)。
单击该按钮时,将运行检查以查看触发器是否在你定义的过去时间内执行,如果不是,则会触发它。

public class SingleClickListener implements View.OnClickListener {

    protected int defaultInterval;
    private long lastTimeClicked = 0;

    public SingleClickListener() {
        this(1000);
    }

    public SingleClickListener(int minInterval) {
        this.defaultInterval = minInterval;
    }

    @Override
    public void onClick(View v) {
        if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {
            return;
        }
        lastTimeClicked = SystemClock.elapsedRealtime();
        performClick(v);
    }

    public abstract void performClick(View v);

}

在类中,SingleClickListener 与 Button 相关联

myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener(new SingleClickListener() {
    @Override
    public void performClick(View view) {
        // do stuff
    }
});