我想为我的Android应用程序编写一个常见的切入点执行,它有3个活动,在所有3个活动中只切入onCreate()
个方法。我该如何写这个切入点?
答案 0 :(得分:1)
一般来说:
pointcut GIVE_IT_A_NAME() : execution(void Activity.onCreate(..));
或者,如果您想获取所有Activity
子类,请添加+
:
pointcut GIVE_IT_A_NAME() : execution(void Activity+.onCreate(..));
然后,您可以使用切入点,例如:
before() : GIVE_IT_A_NAME() {
// do something
}
你也可以使用after()
,这取决于你想要实现的目标。
正如你所说,你需要它为你的课程,事实上,请注意你不能在Android核心课程中注入代码,因为它们不是你的APK的一部分,而是在设备上提供。
如果你想确保只注入你的类,你可以为切入点定义添加一些条件:
pointcut GIVE_IT_A_NAME() : execution(void *.onCreate(..))
&& within(YOUR_MAIN_PACKAGE_NAME.*)
&& this(android.app.Activity+);
因此切入点必须在该特定包名称内,并且类类型必须是android.app.Activity
或子类。当然,如果您使用的是Android支持库,则需要更改最后一个条件。