张家界网站建设的公司,广州卓天跨境电商网站,做的网站侵犯美的商标赔偿多少钱,网站关键词排名不稳定探测 界面绘制性能获取界面的绘制性能有很多种方法#xff0c;比如说 Systrace 但是这种方法 有一个不太好的地方就是使用起来较为复杂#xff0c; 有没有一种 谷歌官方推荐 的方便一点的方法 #xff0c;其实是有的#xff0c;只需要一个函数 就可以获得layout的时间 非常…探测 界面绘制性能获取界面的绘制性能有很多种方法比如说 Systrace 但是这种方法 有一个不太好的地方就是使用起来较为复杂 有没有一种 谷歌官方推荐 的方便一点的方法 其实是有的只需要一个函数 就可以获得layout的时间 非常适合于 我们平时开发中 测试页面性能。//调试界面性能时使用,可打印关键的layout耗时使用完毕需删除fun Activity.printPerformanceForLayout(tag: String performance) {val handlerThread HandlerThread(FrameMetrics)handlerThread.start()val handler Handler(handlerThread.looper)if (android.os.Build.VERSION.SDK_INT android.os.Build.VERSION_CODES.N) {window.addOnFrameMetricsAvailableListener({ _, frameMetrics, _ -val frameMetricsCopy FrameMetrics(frameMetrics)//返回的是纳秒val layoutMeasureDurationNs frameMetricsCopy.getMetric(FrameMetrics.LAYOUT_MEASURE_DURATION)//多数情况下更习惯于msval layoutMeasureDurationMs layoutMeasureDurationNs.toDouble() / 1000000.toDouble()//如果有超过16ms的输出 那就要考虑你的界面是否需要进行优化了Log.v(wuyue, layoutMeasureDurationMs: layoutMeasureDurationMs)}, handler)}}复制代码看下运行结果可以根据log的结果 来 估算页面的渲染性能。类似于这种》16ms 才layoutMeasure一次的显然是界面有了卡顿界面首次绘制完成时间通常而言我们有时候还希望获取到界面启动 到“界面绘制完成” 的时间 为什么要加引号 因为 往往 ActivityTaskManager: Displayed 展示出来的结果 仅仅是表示了从启动应用到系统认为其 “已启动” 所花费的时间其中包括绘制第一帧 (所以是 “已显示” 的状态)但大部分的情况是我们界面启动以后 还会做一些业务上的操作 比如去io获取一些重要的信息 然后刷新ui 怎么获取到 界面启动 到这个时间点的耗时大部分人都是在在onCreate里面 获取一个时间戳 然后在业务操作完成的时间点 再获取一个时间戳 然后算一下 差额其实现在就有更简便的写法reportFullyDrawn在你认为合适的地方 调用这个函数 然后观测如下日志这是一种更为简便的观测方法更快捷的获取activity的启动时间有时候我们喜欢观察如下日志来获取activity的启动时间但其实有时候 这样也挺不方便的尤其是需要频繁测试一个页面的启动性能老是靠手点 很不方便其实可以用 shell 命令来完成adb shell am start-activity -W -n 包名/activity名称复制代码也可以对脚本的执行结果 进行grep 只抽取你关键的total time 进行展示adb shell am start-activity -W -n 包名/activity名称 | grep TotalTime | cut -d -f 2复制代码adb shell am start-activity -S -W -R 100 -n 包名/activity名称复制代码获取应用冷启动 性能有时候我们需要统计app的冷启动性能单次结果往往不准确 还需要多次统计以后 做平均值也可以用如下脚本来实现 注意不是单引号 而是 for i in seq 1 100doadb shell am force-stop com.vivo.spacesleep 2adb shell am start-activity -W -n 包名/activity名称 | grep TotalTime | cut -d -f 2done复制代码效果如下作者vivo祁同伟链接https://juejin.cn/post/6953221575860568077著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。