第一次充气时,ViewHolder充气时间过长

时间:2018-02-18 14:13:40

标签: android android-fragments android-recyclerview android-adapter android-viewholder

在带有NavigationDrawer的MainActivity中,我在两个片段之间切换(通过在FrameLayout中替换它们):

  • FragmentA包含RecyclerView ViewHolderA
  • FragmentB包含RecyclerView ViewHolderB

在选项中,我可以选择默认显示哪个片段。

两个ViewHolders的布局只是CardView内部的ConstraintLayout。绑定需要大约5毫秒

当默认片段为FragmentA时,ViewHolderA inflate需要〜40ms,这会导致应用程序滞后。当我从此片段中将FragmentA替换为FragmentB时,ViewHolderB的通胀仅需约7毫秒,并且recyclerview可以顺利运行。当我再次将FragmentB替换为FragmentA时,ViewHolderA通货膨胀仅需约6毫秒。

但是,当FragmentB为默认值时,ViewHolderB的通胀需要40毫秒。当我切换到FragmentA时,一切都顺利进行,就像之前的情况一样。

为什么回收者观看者的第一次通胀需要太长时间?这两个recyclerviews都有不同的适配器,但在第一次通胀后,应用程序中的每个查看器都会快速膨胀。

我的RecyclerView配置:

layoutManager = LinearLayoutManager(context)
setItemViewCacheSize(20)
isDrawingCacheEnabled = true
drawingCacheQuality = View.DRAWING_CACHE_QUALITY_HIGH

0 个答案:

没有答案