在带有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