我目前有当前的方面
@Aspect
public class ActivityShowingAspect {
private static final String POINTCUT_METHOD =
"execution(@nz.co.kevinsahandsomedevil.android.myaccount.aspect.ActivityMustBeShowing * *(..))";
@Pointcut(POINTCUT_METHOD)
public void methodAnnotatedWithActivityShowing() {
}
@Around("methodAnnotatedWithActivityShowing()")
public Object weaveJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable {
Activity activity = // code to retrieve the calling activity, joinPoint.getTarget() or whatever
Object result = null;
if(!activity.isFinishing()) {
result = joinPoint.proceed();
} else {
result = // do something else
}
return result;
}
}
我想知道如何从Aspect中确定调用Activity
。
答案 0 :(得分:1)
好的,这取决于注释方法的位置。
如果在Activity实现中声明了带注释的方法,那么您确实可以调用joinpoint.getTarget()
并转换结果。
此外,您可能希望更新切入点以确保该方法确实在某个活动上:
execution(@nz.co.vodafone.android.myaccount.aspect.ActivityMustBeShowing * *(..)) && within(android.app.Activity+)
如果情况并非如此,那么您可能需要在任何活动onResume()
之前添加建议,以便记住当前活动的内容。