Android布局优化技巧大盘点

本文探讨了Android布局优化的多个方面,包括使用HWUI呈现模式分析、Layout Inspector进行布局加载和绘制优化,以及通过AspectJ进行布局整体耗时监控。文章提供了具体的代码示例,如使用Factory2监控单个视图创建耗时,以及通过FPS计算监测布局绘制性能。此外,还介绍了AsyncLayoutInflater和X2C等解决方案,以减少布局加载和绘制的时间成本。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值