欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android之有效防止按钮多次重复点击的方法(必看篇)

程序员文章站 2022-05-07 11:33:32
为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~ 那么如何有效避免这种情况的发生呢? 我的想法是,判...

为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~

那么如何有效避免这种情况的发生呢?

我的想法是,判断用户点击按钮间隔时间,如果间隔时间太短,则认为是无效操作,否则进行相关业务处理

首先将这块提取为工具类(方便接下来的调用),现在就起名为:buttonutils

public class buttonutils {
  private static long lastclicktime = 0;
  private static long diff = 1000;
  private static int lastbuttonid = -1;

  /**
   * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
   *
   * @return
   */
  public static boolean isfastdoubleclick() {
    return isfastdoubleclick(-1, diff);
  }

  /**
   * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
   *
   * @return
   */
  public static boolean isfastdoubleclick(int buttonid) {
    return isfastdoubleclick(buttonid, diff);
  }

  /**
   * 判断两次点击的间隔,如果小于diff,则认为是多次无效点击
   *
   * @param diff
   * @return
   */
  public static boolean isfastdoubleclick(int buttonid, long diff) {
    long time = system.currenttimemillis();
    long timed = time - lastclicktime;
    if (lastbuttonid == buttonid && lastclicktime > 0 && timed < diff) {
      log.v("isfastdoubleclick", "短时间内按钮多次触发");
      return true;
    }
    lastclicktime = time;
    lastbuttonid = buttonid;
    return false;
  }  

}

我们通过判断俩次点击时间间隔去判定当前点击操作是否为有效操作。那么如何在使用中调用呢?继续往下看。。。

gv_isf.setonitemclicklistener(new onitemclicklistener() {

      @override
      public void onitemclick(adapterview<?> arg0, view arg1, int arg2,
          long arg3) {
        if (!buttonutils.isfastdoubleclick(r.id.gv_integralstore)) {
          //写你相关操作即可
        }

      }
    });

!buttonutils.isfastdoubleclick(r.id.gv_integralstore):这块是关键。我的想法就是在单击事件中进行判断,看看当前的点击事件是否为有效点击事件

好了,一个简单又实用的防止按钮多次重复点击的工具类就搞定了。。。

以上这篇android之有效防止按钮多次重复点击的方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。