其他
「预拉取(prefetch)机制」作为RecyclerView的重要特性之一,常常与缓存复用机制一起配合使用、共同协作,极大地提升了RecyclerView整体滑动的流畅度。并且,这种特性在ViewPager2中同样得以保留,对ViewPager2滑动效果的呈现也起着关键性的作用。因此,我们ViewPager2系列的第二篇,就是要来着重介绍RecyclerView的预拉取机制。01预拉取是指什么?在计算机术语中,「预拉取」指的是在已知需要某部分数据的前提下,利用系统资源闲置的空档,预先拉取这部分数据到本地,从而提高执行时的效率。具体到RecyclerView预拉取的情境则是:利用UI线程正好处于空闲状态的时机预先拉取待进入屏幕区域内的一部分列表项视图并缓存起来从而减少因视图创建或数据绑定等耗时操作所引起的卡顿。02预拉取是怎么实现的?正如把缓存复用的实际工作委托给了其内部的Recycler类一样,RecyclerView也把预拉取的实际工作委托给了一个名为GapWorker的类,其内部的工作流程,可以用以下这张思维导图来概括:接下来我们就循着这张思维导图,来一一拆解预拉取的工作流程。1.发起预拉取工作通过查找对GapWorker对象的引用,我们可以梳理出3个发起预拉取工作的时机,分别是:RecyclerView被拖动(Drag)时