Android,判断是否快速点击

ops/2024/10/21 9:47:34/

问题背景

在Android控件中,如果快速点击容易造成一些不同的bug,尤其是那种在click事件中方有耗时操作的代码,容易引起anr,并且有些性能低的机器,在用户点击多次控件的时候很容易出现问题,在车机中也会导致回弹的一系列问题(这里面包括get到的信号导致回弹),针对于这种情况需要做控件快速点击的保护方案。

核心实现

判断用户是否快速点击,主要还是和一个时间阈值作对比,比如用户在500ms内快速点击某个控件,但是我们又不希望控件做出反应,核心代码如下:

import android.os.SystemClock;/*** view fast click deal.* * <br>*/
public class FastClickUtil {private static long sLastClickTime = 0;private static final long MIN_DELAY_TIME = 500;private static long mFirstTime = 0;private static int mLastBtn = 0;/*** isFastClick.* @return true fast click.*/public static boolean isFastClick() {long time = SystemClock.uptimeMillis();long timeD = time - sLastClickTime;if (0 < timeD && timeD < MIN_DELAY_TIME) {return true;} else {sLastClickTime = time;return false;}}/*** Is or not fast click function.* @param btnId view id.* @return true is, false is not*/public static boolean isFastClick(int btnId) {long time = SystemClock.elapsedRealtime();long timeD = time - mFirstTime;if (mLastBtn == btnId && 0 < timeD && timeD < MIN_DELAY_TIME) {return true;} else {mLastBtn = btnId;mFirstTime = time;return false;}}}


http://www.ppmy.cn/ops/5598.html

相关文章

Redis慢查询问题的排查和解决

1.排查慢查询问题 &#xff08;1&#xff09;设置慢查询参数 slowlog-log-slower-than 10000 --设置慢查询的时间阀值&#xff0c;单位微秒 slowlog-max-len 128 --设置慢查询FIFO队列的长度 &#xff08;2&#xff09;模拟大KEY public class RedisExa…

安居水站:水站经营秘籍:年入30万不是梦。水站创业指南。

在这个快节奏的社会里&#xff0c;初创企业家们总是在寻找一条明路&#xff0c;以在竞争激烈的市场中立足。为了帮助他们更好地实现这一目标&#xff0c;我根据经验决定制定一份水站经营指导手册。这份手册将详细阐述如何从零起步&#xff0c;如何运营&#xff0c;如何进行市场…

多语言vue-i18n (vue2,uniapp)

安装vue-i18n npm install vue-i18n8 --save // npm install vue-i18n–save 9版本需要vue3.0 // 在vue2环境下&#xff0c;默认安装 npm install vue-i18n 的版本是 vue-i18n9.2.2&#xff0c; // 报错信息里提示这个版本要求是vue3&#xff0c;所以我们安装适合vue2版本的vu…

OJ:数字三角形(搜索)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;每日一练 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f337;1.问题描述&#xff1a; ⛳️题目描述&#xff1a; 示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路…

【ThinkPHP框架教程·Part-01】ThinkPHP6.x框架安装教程

文章目录 一、框架介绍1、框架简介和版本选择2、主要新特性 二、安装步骤1、下载并运行Composer-Setup.exe2、安装TP前切换镜像3、安装稳定版4、测试运行 一、框架介绍 1、框架简介和版本选择 Thinkphp是一种基于php的开源web应用程序开发框架ThinkPHP框架&#xff0c;是免费开…

Swift中协程与异步编程

在Swift中&#xff0c;协程(coroutine)是一种实现异步编程的机制。协程可以在代码中暂停和恢复执行&#xff0c;从而允许在需要等待某些操作完成时&#xff0c;将控制权交还给调用方&#xff0c;在操作完成后再恢复执行。 在Swift 5.5之前&#xff0c;实现协程需要使用第三方库…

【Hadoop大数据技术】——Sqoop数据迁移(学习笔记)

&#x1f4d6; 前言&#xff1a;在实际开发中&#xff0c;有时候需要将HDFS或Hive上的数据导出到传统关系型数据库中&#xff08;如MySQL、Oracle等&#xff09;&#xff0c;或者将传统关系型数据库中的数据导入到HDFS或Hive上&#xff0c;如果通过人工手动进行数据迁移的话&am…

ARM-学习day8

使用温湿度采集&#xff0c;控制灯&#xff0c;风扇和马达. lic.h #ifndef __IIC_H__ #define __IIC_H__#include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h"#define SET_SDA_OUT do{GPIOF->MODER & (~(0x3 << 30)); \GPIOF->M…