Android中 使用AOP避免重复点击事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中 使用AOP避免重复点击事件相关的知识,希望对你有一定的参考价值。
参考技术A ```javascript```
``` javascript
//上次点击的时间
private static Long sLastclick =0L;
//拦截所有两次点击时间间隔小于一秒的点击事件
private static final Long FILTER_TIMEM =1000L;
//上次点击事件View
private View lastView;
//---- add content -----
//是否过滤点击 默认是
private boolean checkClick =true;
//---- add content -----
@Around("execution(* android.view.View.OnClickListener.onClick(..))")
public void onClickLitener(ProceedingJoinPoint proceedingJoinPoint)throws Throwable
//大于指定时间
if (System.currentTimeMillis() -sLastclick >=FILTER_TIMEM)
doClick(proceedingJoinPoint);
else
//---- update content ----- 判断是否需要过滤点击
//小于指定秒数 但是不是同一个view 可以点击 或者不过滤点击
if (!checkClick ||lastView ==null ||lastView != (proceedingJoinPoint).getArgs()[0])
//---- update content ----- 判断是否需要过滤点击
doClick(proceedingJoinPoint);
else
//大于指定秒数 且是同一个view
LogUtils.e(TAG,"重复点击,已过滤");
//执行原有的 onClick 方法
private void doClick(ProceedingJoinPoint joinPoint)throws Throwable
//判断 view 是否存在
if (joinPoint.getArgs().length ==0)
joinPoint.proceed();
return;
//记录点击的view
lastView = (View) (joinPoint).getArgs()[0];
//---- add content -----
//修改默认过滤点击
checkClick =true;
//---- add content -----
//记录点击事件
sLastclick =System.currentTimeMillis();
//执行点击事件
try
joinPoint.proceed();
catch (Throwable throwable)
throwable.printStackTrace();
@Before("execution(@包名.RepeatClick * *(..))")
public void beforeEnableDoubleClcik(JoinPoint joinPoint)throws Throwable
checkClick =false;
```
以上是关于Android中 使用AOP避免重复点击事件的主要内容,如果未能解决你的问题,请参考以下文章
Jquery UI Touch Punch点击事件在Android应用程序中不起作用[重复]