@TraceLog
@RunOnNewThread
public void checkAndRestartDownloadTask(final boolean isAutoCache) {
DownloadManager.getInstance().startService(isAutoCache);
}
@TraceLog
@RunOnNewThreadWithUICallback
public Boolean isShowTipsForFirstVideoCache(DBQueryCallback<Boolean> callback) {
if (!PreferenceClient.is_first_video_cache_done.getBoolean() &&
(DownloadManager.getInstance().getFinishedTaskSize(true, false) > 0 ||
DownloadManager.getInstance().getFinishedTaskSize(true, true) > 0)) {
PreferenceClient.is_first_video_cache_done.setBoolean(true);
return true;
}
return false;
}
@Aspect
public class TudouDownloadAspect {
public static final String TAG = TudouDownloadAspect.class.getSimpleName();
private static final String THREAD_CALLBACK_POINT_METHOD =
"execution(@com.download.common.aspect.RunOnNewThreadWithUICallback * *(.., com.download.common.callback.DBQueryCallback))";
private static final String THREAD_CALLBACK_POINT_CONSTRUCTOR =
"execution(@com.download.common.aspect.RunOnNewThreadWithUICallback *.new(.., com.download.common.callback.DBQueryCallback))";
private static final String THREAD_POINT_METHOD =
"execution(@com.download.common.aspect.RunOnNewThread * *(..))";
private static final String THREAD_POINT_CONSTRUCTOR =
"execution(@com.download.common.aspect.RunOnNewThread *.new(..))";
private static final String LOG_POINT_METHOD =
"execution(@com.download.common.aspect.TraceLog * *(..))";
private static final String LOG_POINT_CONSTRUCTOR =
"execution(@com.download.common.aspect.TraceLog *.new(..))";
@Pointcut(THREAD_CALLBACK_POINT_METHOD)
public void methodAnnotatedWithThread(){}
@Pointcut(THREAD_CALLBACK_POINT_CONSTRUCTOR)
public void constructorAnnotatedWithThread(){}
@Pointcut(THREAD_POINT_METHOD)
public void methodAnnotatedWithNewThread(){}
@Pointcut(THREAD_POINT_CONSTRUCTOR)
public void constructorAnnotatedWithNewThread(){}
@Pointcut(LOG_POINT_METHOD)
public void methodAnnotatedWithLog(){}
@Pointcut(LOG_POINT_CONSTRUCTOR)
public void constructorAnnotatedWithLog(){}
/**
* @RunOnNewThreadWithUICallback 的注解解释器
* */
@Around("methodAnnotatedWithThread() || constructorAnnotatedWithThread()")
public Object wrapNewThreadWithCallback(final ProceedingJoinPoint joinPoint) throws Throwable {
Log.v(TAG, "in wrapNewThreadWithCallback");
Object[] objs = joinPoint.getArgs();
final DBQueryCallback callback = (DBQueryCallback) objs[objs.length-1];
new Thread(new Runnable() {
@Override
public void run() {
try {
final Object obj = joinPoint.proceed();
DownloadClient.getInstance().mainHandler.post(new Runnable() {
@Override
public void run() {
if (obj != null)
callback.querySuccess(obj);
else
callback.queryFail();
}
});
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}).start();
return null;
}
/**
* @RunOnNewThread 的注解解释器
* */
@Around("methodAnnotatedWithNewThread() || constructorAnnotatedWithNewThread()")
public void wrapNewThread(final ProceedingJoinPoint joinPoint) throws Throwable {
Log.v(TAG, "in wrapNewThread");
new Thread(new Runnable() {
@Override
public void run() {
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}).start();
}
/**
* @TraceLog 的注解解释器
* */
@Before("methodAnnotatedWithLog() || constructorAnnotatedWithLog()")
public void wrapWithLog(JoinPoint joinPoint) throws Throwable {
Log.v(TAG, "before->" + joinPoint.getTarget().toString() + "---" + joinPoint.getSignature().getName());
}
}
buildscript {
repositories {
mavenLocal()
maven { url "https://jitpack.io" }
}
dependencies {
classpath 'org.aspectj:aspectjtools:1.8.+' //AspectJ脚本依赖
}
}
dependencies {
compile 'org.aspectj:aspectjrt:1.8.+' //AspectJ 代码依赖
}
//AspectJ AOP容器加载脚本
final def log = project.logger
final def variants = project.android.libraryVariants
variants.all { variant ->
JavaCompile javaCompile = variant.javaCompile
javaCompile.doLast {
String[] args = ["-showWeaveInfo",
"-1.5",
"-inpath", javaCompile.destinationDir.toString(),
"-aspectpath", javaCompile.classpath.asPath,
"-d", javaCompile.destinationDir.toString(),
"-classpath", javaCompile.classpath.asPath,
"-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)]
log.debug "ajc args: " + Arrays.toString(args)
MessageHandler handler = new MessageHandler(true);
new Main().run(args, handler);
for (IMessage message : handler.getMessages(null, true)) {
switch (message.getKind()) {
case IMessage.ABORT:
case IMessage.ERROR:
case IMessage.FAIL:
log.error message.message, message.thrown
break;
case IMessage.WARNING:
log.warn message.message, message.thrown
break;
case IMessage.INFO:
log.info message.message, message.thrown
break;
case IMessage.DEBUG:
log.debug message.message, message.thrown
break;
}
}
}
}
new Thread(new Runnable() {
@Override
public void run() {
try {
final Object obj = joinPoint.proceed();
DownloadClient.getInstance().mainHandler.post(new Runnable() {
@Override
public void run() {
if (obj != null)
callback.querySuccess(obj);
else
callback.queryFail();
}
});
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}).start();
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有