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

作者:jingxian 时间:2022-03-15 01:30:34 

为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交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
0
投稿

猜你喜欢

  • C#中子类调用父类的实现方法

    2023-08-17 09:09:52
  • Java Volatile关键字你真的了解吗

    2023-08-09 20:28:23
  • C#实现控制电脑注销,关机和重启

    2021-10-28 14:21:15
  • C#中字符串与字节数组的转换方式

    2023-06-28 10:43:53
  • Java安全-ClassLoader

    2023-08-18 02:12:21
  • Java 多线程同步 锁机制与synchronized深入解析

    2023-12-20 17:55:50
  • Java并发编程中的生产者与消费者模型简述

    2023-02-16 20:33:18
  • Android自定义View实现拖动自动吸边效果

    2021-11-18 03:00:38
  • winform 调用摄像头扫码识别二维码的实现步骤

    2022-08-08 21:50:20
  • Mybatis Lombok使用方法与复杂查询介绍

    2023-03-30 00:30:13
  • java单例模式学习示例

    2022-03-29 19:03:41
  • java多线程-同步块实例讲解

    2022-06-21 02:10:41
  • flutter中使用流式布局示例详解

    2023-08-24 23:49:06
  • Unity实现场景加载功能

    2021-09-15 12:27:45
  • Android应用动态修改主题的方法示例

    2022-01-08 10:50:34
  • C#获取程序文件相关信息的方法

    2021-12-12 05:34:51
  • 一文搞懂Spring中的注解与反射

    2023-11-11 11:38:18
  • java微信企业号开发之通讯录

    2022-04-28 12:51:40
  • java递归设置层级菜单的实现

    2023-03-05 14:14:57
  • Java 中责任链模式实现的三种方式

    2023-11-08 14:32:31
  • asp之家 软件编程 m.aspxhome.com