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可拖动也触发点击事件[重复]

如何避免jQuery UI可拖动也触发点击事件[重复]

Android重复点击事件处理

Jquery UI Touch Punch点击事件在Android应用程序中不起作用[重复]

如何在android中获取主屏幕小部件列表项的点击事件[重复]

如何使用 RxDataSources 避免重复点击 Tableview 上的按钮