我正在查看我的应用程序生成的systrace,我已经确定了一个要花太长时间的框架。这是由RecyclerView的onCreateViewHolder在膨胀项目视图时造成的。项目视图与ConstraintLayout一样平坦。但下面的systrace报告有很多VerifyClass块,每个块占用17 ms。
VerifyClass块是什么意思?

发布于 2017-10-19 15:24:07
很难说VerifyClass到底在做什么,因为它不是Android或ConstraintLayout的一部分。我发现的唯一提到是SDK的C部分:
r1-AOSP-changelog.html
但我有几个建议:
1)尝试在发布模式下构建你的应用程序,看看你是否还有FPS的问题。我的假设是,这个VerifyClass是为调试版本执行的,用于对某些东西进行基准测试,但这只是猜测。
2) ConstraintLayout具有方便的API和平面的层次结构(这对绘图遍历有积极的影响),但的测试和布局过程仍然比其他布局慢很多。其原因是约束计算的复杂性。因此,在RecyclerView中使用它可能会在ViewHolder创建期间造成严重的性能损失。如果列表单元格的层次结构足够简单,我建议切换到一些普通的布局并检查行为。
发布于 2017-10-21 20:50:06
并不是真正的C++/Android内部专家能够清楚地解释VerifyClass方法在linker.h中定义并在linker.cc中实现意味着什么,但我不太注意它的执行时间。
我要考虑的是包含RecyclerView的ConstraintLayout项,它的膨胀消耗了CPU时间。
关于尝试发行版构建的建议,它不会产生任何不同--对本机VerifyClass方法的调用将同时用于调试和发布构建。
https://stackoverflow.com/questions/46701801
复制相似问题