addOnFrameMetricsAvailableListener获取activity的每帧刷新时间

1、背景需求

    我们在进行布局优化的时候需要查看下页面的绘制耗时问题,在Hierarchy Viewer 停止维护后,Google 官方推荐使用

window.addOnFrameMetricsAvailableListener()的方式获取。

2、window.addOnFrameMetricsAvailableListener()的使用方法

  在activity的onStart()方法中添加监听即可,如下

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            getWindow().addOnFrameMetricsAvailableListener(new Window.OnFrameMetricsAvailableListener() {
                List<Integer> frameDurations = new ArrayList<>(1000);
                @Override
                public void onFrameMetricsAvailable(Window window, FrameMetrics frameMetrics, int dropCountSinceLastInvocation) {              
                        frameDurations.add((int) (frameMetrics.getMetric(TOTAL_DURATION) / 1000000));       

//这里获取了1000帧的数据            
                    if (frameDurations.size() == 1000) {
                     getWindow().removeOnFrameMetricsAvailableListener(this);
                        Log.i(Arrays.toString(frameDurations.toArray()) + “aaa”);
                    }
                }
            }, new Handler(Looper.getMainLooper()));
        }

点赞