【发布时间】:2014-04-15 20:20:40
【问题描述】:
是否可以使用环绕通知取消方法的执行并在方面的方法内执行它?
示例: 我们有一个项目:
1 - 一个活动 SenderActivity.java。在这个活动中,我们有一个返回字符串的方法 MethodA()。
喜欢:
public static String MethodA(){
String string = "a string";
return string;
}
2 - 我们使用 aspect.aj 中的切入点捕获 MethodA() 的执行
喜欢:
pointcut pointcut_catchMethodA() : execution(static String MethodA());
周围的建议是:
String around() : pointcut_catchMethodA(){
//We return null or simply don't call the proceed()
return null;
}
所以在这里,每次尝试执行 MethodA() 时,周围的通知都会取消它。
我想知道在取消之后,我是否可以做类似的事情:
public void MethodToCallMethodAInsideTheAspect(){
SenderActivity.MethodA();
}
因此,通过这种方式,我取消了对 MethodA() 的原始调用,并在我的 aspect.aj 中手动调用它。所以我希望 MethodA() 返回它的原始值。 (string = "一个字符串")。
有可能吗?或者,如果有办法实现这一点,请不要犹豫您的指导。
因为我尝试了这种实现,当我想手动执行 SenderActivity.MethodA() 时,我的实现返回了 null 值。我认为它会围绕建议的价值返回。
【问题讨论】:
-
我不知道方面编程可以在 Android 上运行。有什么教程可以开始吗?
-
一开始我也对此表示怀疑,但经过一番搜索,我发现它也可以在 Android 上使用。这是一个很好的教程:deansserver.co.uk/~dean/2011/07/18/…