我正在查看由我的应用程序生成的systrace
,发现一个框架花费的时间太长。
这是由我的商品 View 膨胀时RecyclerView
的onCreateViewHolder
引起的。项目 View 与ConstraintLayout
一样平。但是下面的systrace
报告包含许多VerifyClass
块,每个块需要17毫秒。VerifyClass
块是什么意思?
最佳答案
很难说VerifyClass
在做什么,因为它不是Android Java SDK或ConstraintLayout的一部分。我发现的唯一提及是在SDK的C部分:
http://www.androidpolice.com/android_aosp_changelogs/android-m-preview-2-to-android-7.0.0_r1-AOSP-changelog.html
但是我有一些建议:
1)尝试在 Release模式下构建您的应用,然后查看是否仍然存在FPS下降的问题。我的假设是执行此VerifyClass用于调试构建,以对某些事情进行基准测试,但这只是一个猜测。
2)虽然ConstraintLayout具有便捷的API和平坦的层次结构(这对图形遍历有积极影响),但它的仍然比其他Android Layout的ozt_rstrong度量和布局过程更慢。其原因是约束计算的复杂性。因此,在RecyclerView中使用它可能会导致ViewHolder创建期间的性能显着下降。
如果列表单元的层次结构足够简单,我建议切换到一些常规布局并检查其行为。