自定義單擊偵聽器可防止多次快速單擊
為了防止按鈕在短時間內多次觸發 (假設在 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
}
});