Settings/开发者选项/HWUI呈现模式分析
1)在屏幕上显示为条形图:
2)adb shell dumpsys gfxinfo
https://developer.android.com/training/testing/performance
2.3 Layout Inspector
https://www.jianshu.com/p/1b64024f2d08
AS:Tools > Android > Layout Inspector 选择对应进程
左侧看视图层级结构,右侧看具体属性和赋值内容。
/ 监控 /
3.1 布局整体耗时监控:
可以使用AspectJ做面向aop的非侵入性的监控。
工程主gradle:
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0’
项目gradle:
apply plugin: 'android-aspectjx’
implementation 'org.aspectj:aspectjrt:1.8.+’
针对Activity.setContentView监控简单示例:
@Aspect
public class PerformanceAop {
public static final String TAG = “aop”;
@Around(“execution(* android.app.Activity.setContentView(…))”)
public void getSetContentViewTime(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));
}
}
3.2 单个视图创建耗时监控:
Factory2、Factory本质上他俩就是创建View的一个hook,可以通过这个回调来监控单个View创建耗时情况。
注:Factory2继承自Factory,Factory2比Factory的onCreateView方法多一个parent的参数,即当前创建View的父View。
简单示例:
LayoutInflaterCompat.setFactory2(getLayoutInflater(), new LayoutInflater.Factory2() {
@Nullable
@Override
public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
//1.配合getDelegate().createView来做高版本控件的兼容适配。
//2.单个View