测试给提了一个bug,登录按钮连续点击两次会发生登录成功又退出到登录页,后来发现所负责模块的点击事件都会发生这种情况——连续点击产生多次事件。
究其原因,是因为按钮添加了点击效果,造成了响应的延迟。
想过让它被一次点击之后置为不可点击状态,可是一想就登录按钮来说“如果断网怎么办”等诸多逻辑判断可能会造成较多量代码。本着尽可能少写代码的原则,那么解决方法就是在点击效果发生的时间段之内不让它再被点击,可以把时间设为1秒或者其他的时间。
代码如下:
public abstract class NoMoreOnClickListener implements View.OnClickListener {
public static final int MIN_CLICK_DELAY_TIME = 1000;
private long lastClickTime = 0;
@Override
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoMoreClick(v);
}
}
public abstract void onNoMoreClick(View v);
}
代码比较简单,用法如下:
private View.OnClickListener mOnClickListener = new NoMoreOnClickListener() {
@Override
public void onNoMoreClick(View v) {
//TODO:
}
};
网友评论