如何从方面内引用 Activity
How to reference an Activity from within an Aspect
我目前有现相
@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;
}
}
我想知道如何从方面中确定调用 Activity
。
好的,这取决于带有注释的方法的位置。
如果带注释的方法是在 Activity 实现中声明的,那么您确实可以调用 joinpoint.getTarget()
并强制转换结果。
您可能还想更新切入点以确保该方法确实在 activity 上:
execution(@nz.co.vodafone.android.myaccount.aspect.ActivityMustBeShowing * *(..)) && within(android.app.Activity+)
如果不是这种情况,那么您可能需要在任何 activity 的 onResume()
之前添加一条建议,以记住当前的 activity 是什么。
我目前有现相
@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;
}
}
我想知道如何从方面中确定调用 Activity
。
好的,这取决于带有注释的方法的位置。
如果带注释的方法是在 Activity 实现中声明的,那么您确实可以调用 joinpoint.getTarget()
并强制转换结果。
您可能还想更新切入点以确保该方法确实在 activity 上:
execution(@nz.co.vodafone.android.myaccount.aspect.ActivityMustBeShowing * *(..)) && within(android.app.Activity+)
如果不是这种情况,那么您可能需要在任何 activity 的 onResume()
之前添加一条建议,以记住当前的 activity 是什么。