fut*_*sta 7 aop android aspectj
我在我的Android项目中使用AspectJ,我想编写一个pointcut能够捕获所有调用onCreate()和onDestroy()我的活动的函数.我是AspectJ的新手,所以可能我在这里遗漏了一些东西,但为什么这样:
pointcut createActivity(Activity a) : target(a) && execution(* Activity.onCreate(..)) && within(com.test.activities..*);
工作而且这个:
target(a) && call(* Activity.onCreate(..)) && within(com.test.activities..*);
不起作用?
anj*_*osc 11
很高兴看到其他人冒险进入aspectJ和Android :-)
在android中使用aspectJ时,你只能使用编译时编织,这基本上意味着你只能拦截你拥有的代码.
第一个示例有效,因为当使用execution()切入点时,代码会在您的Activitiy.onCreate()内部编织.
第二个例子不起作用,因为建议必须编织到调用你的活动的onCreate的方法中.这可能类似于您无法修改的ActivityManager.
作为参考,这是我在开发中使用的内容:
public aspect LogAspect {
public String ATAG = "LogAspect";
pointcut tolog1() : execution(* Activity+.*(..)) ;
before() : tolog1() {
String method = thisJoinPoint.getSignature().toShortString();
Log.d(ATAG, "=========== entering " + method+", parms="+Arrays.toString(thisJoinPoint.getArgs()));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3479 次 |
| 最近记录: |