AspectJ in Android: pointcut call(* Activity.onCreate(..)) doesn't pick out Activity.onCreate() calls

百般思念 提交于 2019-11-27 20:53:22

Nice to see other people adventuring into aspectJ and Android :-)

When using aspectJ with android you are limited to compile-time weaving, which basically means that you can only intercept code you own.

The first example works because when using the execution() pointcut the code gets weaved "inside" your Activitiy.onCreate().

The second example does not work, because the advice would have to get weaved into the methods that call your activity's onCreate. That's probably something like the ActivityManager that you cannot modify.

As a reference, here's what I use in development:

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()));
    }

}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!