美文网首页
防止多次按钮点击事件方法(butterKnife)

防止多次按钮点击事件方法(butterKnife)

作者: 向天葵 | 来源:发表于2019-01-23 10:49 被阅读0次

在ButterKnife中其中一个@OnClick注释中,其内部使用的是DebouncingOnClickListener这个方法。主要的作用是防止按钮被用户多次点击后产生多次OnClick事件。

关键代码:

static boolean enabled = true;

private static final Runnable ENABLE_AGAIN = () -> enabled = true;

@Override public final void onClick(View v) {
  if (enabled) {
    enabled = false;
    v.post(ENABLE_AGAIN);
    doClick(v);
  }
}

public abstract void doClick(View v);
}

以上代码做的是利用一个变量enabled,在一次点击事件之后,下一次点击事件不会重复产生即防止点击事件多次发生。

其原理是当一个事件在View中发生的时候,会此事件放到View的消息队列(MessageQueue)中。当你第一次点击事件的时候,就把事件放到了消息队列中,这个时候再将""ENABLE_AGAIN()"改变静态控制变量的进程放入后面,点击事件发生后,第二个事件就是改变变量,这样保证了点击事件不会重复发生。

相关文章

网友评论

      本文标题:防止多次按钮点击事件方法(butterKnife)

      本文链接:https://www.haomeiwen.com/subject/nhkjjqtx.html