AndroidではAspectjを使用してフェースプログラミングを行います
1説明
AndroidではAOPプログラミングのシーンが必要になる場合がありますが、aspectjは良い選択です.だからここに記録する
2 Android導入Aspectj
プロジェクトのbuild.gradleには次の構成が導入されています.
切り込みが必要なモジュールbuild.gradleは次のように構成されています.
次にカットするコードを書くことができます.ここではApplicationを例に挙げます.
基本構成完了
AndroidではAOPプログラミングのシーンが必要になる場合がありますが、aspectjは良い選択です.だからここに記録する
2 Android導入Aspectj
プロジェクトのbuild.gradleには次の構成が導入されています.
//for AspectJ
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
切り込みが必要なモジュールbuild.gradleは次のように構成されています.
apply plugin: 'android-aspectjx' // apply plugin
//AspectJ
api 'org.aspectj:aspectjrt:1.8.9'
次にカットするコードを書くことができます.ここではApplicationを例に挙げます.
@Aspect
public class PerformanceManager {
private static final String TAG = "PerformanceManager";
@Around("execution(* com.qiyei.android.AndroidApplication.on**(..))")
public void getAndroidApplicationTime(ProceedingJoinPoint joinPoint) {
Signature signature = joinPoint.getSignature();
long time = System.currentTimeMillis();
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
LogManager.i(TAG, "getAndroidApplicationTime " + signature.getName() + " cost " + (System.currentTimeMillis() - time) + " ms");
}
@Around("call(* com.qiyei.android.AndroidApplication.**(..))")
public void getApplicationTime(ProceedingJoinPoint joinPoint) {
Signature signature = joinPoint.getSignature();
long time = System.currentTimeMillis();
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
LogManager.i(TAG, "getApplicationTime " + signature.getName() + " cost " + (System.currentTimeMillis() - time) + " ms");
}
}
基本構成完了