package view_inspector.aspect;
import android.content.Context;
import android.util.Log;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import view_inspector.ViewInspector;
@Aspect public class ViewInspectorAspect {
private static final int OVERLAY_PERMISSION_CALL = 1;
private ViewInspector mViewInspector;
public ViewInspectorAspect() {
mViewInspector = ViewInspector.create();
}
@Pointcut("within(android.app.Activity+)") public void withinActivityClass() {
}
@Pointcut("execution(void onCreate(..)) && withinActivityClass()")
public void activityOnCreatedCall() {
}
@Around("activityOnCreatedCall()")
public Object injectViewInspector(ProceedingJoinPoint joinPoint) throws Throwable {
Log.d(ViewInspector.TAG, "injectViewInspector");
mViewInspector.onCreate((Context) joinPoint.getThis());
return joinPoint.proceed();
}
@Pointcut("execution(void onResume()) && withinActivityClass()")
public void activityOnResumeCall() {
}
@Around("activityOnResumeCall()") public Object showViewInspector(ProceedingJoinPoint joinPoint)
throws Throwable {
mViewInspector.onResume();
return joinPoint.proceed();
}
@Pointcut("execution(void onPause()) && withinActivityClass()")
public void activityOnPauseCall() {
}
@Around("activityOnPauseCall()") public Object hideViewInspector(ProceedingJoinPoint joinPoint)
throws Throwable {
mViewInspector.onPause();
return joinPoint.proceed();
}
@Pointcut("execution(void onDestroy()) && withinActivityClass()")
public void activityOnDestroyCall() {
}
@Around("activityOnDestroyCall()")
public Object destroyViewInspector(ProceedingJoinPoint joinPoint) throws Throwable {
mViewInspector.onDestroy((Context) joinPoint.getThis());
return joinPoint.proceed();
}
}