【发布时间】:2015-07-27 08:57:05
【问题描述】:
在我正在工作的项目中,我们最近添加了一定程度的安全性,现在我不想重写整个网络逻辑,如果它可以使用 AOP 更轻松地完成的话。
所以,我试图拦截整个应用程序中使用的 requestListener 的“onRequestSuccess”方法。 为此我做了一个简单的方面:
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class NetworkResponseAspect {
@Around("execution(public void *.onRequestSuccess(..))")
public void intercept(ProceedingJoinPoint joinPoint){
System.out.println("call intercepted " + joinPoint);
try {
joinPoint.proceed();
} catch (Throwable e) {
System.out.println("wut");
}
}
}
我添加了 aspectj weaver 依赖项:compile 'org.aspectj:aspectjweaver:1.8.6'
而且好像还可以,至少注释被android studio识别了。
我在“joinpoint.proceed()”调用上放置了一个断点,并在调试模式下启动了应用程序。 但是当我登录(触发一个这样的监听器的动作)时,什么也没有发生。我错过了什么吗?
【问题讨论】:
-
就我而言,
@Before和@After也收到了回调,但@Around
标签: android android-studio aspectj