获取布局耗时

 

常规方式

背景:获取每个界面加载耗时

实现:覆写setContentView()方法,手动埋点

 

AOP/ArtHook

(1)AOP实现,(在前面的启动优化中有讲解)

使用:切Activity的 setContentView() 方法。

 

(2)ArtHook实现,(前面内存优化有讲解,主要是检测获取的图片大小是否和显示控件匹配)

使用:同样是切Activity的 setContentView() 方法。

 

 

获取任一控件耗时

使用:LayoutInflater.Factory()  ,如下:

       LayoutInflaterCompat.setFactory2(getLayoutInflater(), new LayoutInflater.Factory2() {
            @Override
            public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {

                if (TextUtils.equals(name, "TextView")) {
                    // 生成自定义TextView
                }
                long time = System.currentTimeMillis();
                View view = getDelegate().createView(parent, name, context, attrs);
                LogUtils.i(name + " cost " + (System.currentTimeMillis() - time));
                return view;
            }

            @Override
            public View onCreateView(String name, Context context, AttributeSet attrs) {
                return null;
            }
        });