@Before("execution(* android.app.Activity.onPause(..))")
public void postOnPause(JoinPoint thisJoinPoint) {
Activity activity = (Activity) thisJoinPoint.getTarget();
Log.d("TEST", "YAY Activity paused");
}
如果我在MainActivity中覆盖:
,这会很有效 @Override
protected void onPause() {
super.onPause();
}
有没有办法在没有添加覆盖的情况下解决这个问题?因为超类Activity仍然应该定义该方法,并且应该运行,即使子类没有实现它。
这可能吗?
答案 0 :(得分:2)
免责声明:我不是Android开发人员,我的答案将解释基本的AspectJ机制。
正如 Aaron他在指向my other answer时已经说过的那样,您需要在运行时通过LTW(加载时编织)检测包含基类的上游JAR或编织它在编译期间通过二进制编织。
如果是你自己的代码调用onPause
,你可以使用call()
切入点而不是execution()
,但是框架可能会发出调用,这使得这个选项成为一个糟糕的选择。