赞
踩
作者丨gerrard0898
来源丨Android开发中文站
https://juejin.im/post/5e0b06ab5188253a82107b32
adb shell am start -W [packageName]/[AppstartActivity全路径]
执行后会得到三个时间:ThisTime、TotalTime和WaitTime,详情如下:
classpath 'com.hujiang.aspectjx:gradle-android-plugin- aspectjx:2.0.0'
然后,在app目录下的build.gradle下加入:
apply plugin: 'android-aspectjx'implement 'org.aspectj:aspectjrt:1.8.+'
@Before("execution(* android.app.Activity.on**(..))")public void onActivityCalled(JoinPoint joinPoint) throws Throwable {...}
在execution中的是一个匹配规则,第一个*代表匹配任意的方法返回值,后面的语法代码匹配所有Activity中on开头的方法。
处理Join Point的类型:
@Aspectpublic class ApplicationAop {@Around("call (* com.json.chao.application.BaseApplication.**(..))")public void getTime(ProceedingJoinPoint joinPoint) { Signature signature = joinPoint.getSignature(); String name = signature.toShortString();long time = System.currentTimeMillis();try { joinPoint.proceed(); } catch (Throwable throwable) { throwable.printStackTrace(); } Log.i(TAG, name + " cost" + (System.currentTimeMillis() - time)); }}
//apply plugin: 'android-aspectjx'
Debug.startMethodTracing();
检测结束代码处添加:
Debug.stopMethodTracing();
使用adb pull将生成的**.trace文件导出到电脑,然后使用Android Studio的Profiler加载
python /Users/quchao/Library/Android/sdk/platform-tools/systrace/systrace.py -t 20 sched gfx view wm am app webview -a "com.wanandroid.json.chao" -o ~/Documents/open-project/systrace_data/wanandroid_start_1.html
Trace.begainSection();Trace.endSection();
推荐↓↓↓
长
按
关
注
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。