当前位置 - 股票行情交易網 - 股票交易 - Android中 使用AOP避免重復點擊事件

Android中 使用AOP避免重復點擊事件

```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;

}

```