自定義單擊偵聽器可防止多次快速單擊

為了防止按鈕在短時間內多次觸發 (假設在 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
    }
});