Article / 2026/05/31
性能优化 (三十) 优雅获取界面布局耗时
性能优化 (三十) 优雅获取界面布局耗时 的技术笔记。
优雅获取界面布局耗时
常规方式
- 耦合
aop/ArtHook
- 背景:获取每个界面加载耗时
- 实现:覆写方法、手动埋点
- 切Acitivity的setContentView
- @Around(“execution(* android.app.Activity.setContentView(..)”)
ARTHook实现
- 切Activity的setContentView
- 获取任一控件耗时
- 低侵入性
- LayoutInflater.Factory
- LayoutInflaterCompat.setFactory2();
LayoutInflaterCompat.setFactory2(getLayoutInflater(), new LayoutInflater.Factory2() {
@Nullable
@Override
public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
if (TextUtils.equals("TextView", name)) {
}
long startTime = System.currentTimeMillis();
View view = getDelegate().createView(parent, name, context, attrs);
Log.i("aa", name + " cost " + (System.currentTimeMillis() - startTime));
return view;
}
@Nullable
@Override
public View onCreateView(@NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
return null;
}
});
- 在activity 的super.onCreate(savedInstanceState);前设置
Giscus 未启用:请在
src/site.config.ts中配置 repoId 与 categoryId。