为了活动小家电-RecyclerView 工作流程(二)

47 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

为了活动小家电,接着上篇搞!

它究竟是如何工作的?

到目前为止,如果您已经基本了解了RecyclerView由哪些组件组成,您可能想知道这个视图实际上是如何工作的。

假设我们有 60 个项目需要在屏幕上滚动,但这里我们只想一次显示 6 个项目。

截屏.png

让每个项目都有自己的 viewholder 实例,并且 viewholder 在缓存特定项目视图时会有所帮助。那么,recyclerview 是如何应用的呢?

  1. 首先,item0item5应在首次执行时显示在屏幕上。因此,它们在可见视图模式下有6个item。之后,当向上滚动列表时,item6应该作为下一个新项目加载。

  2. 当我们滚动一个屏幕时,item0item6移动,item6应该出现在视图中。这时item 7会在等待展示,根本看不到view,而是一个等待显示的区域。同时item0移动到屏幕顶部并被scrapped view调用。

  3. 所以当我们滚动浏览下一个时,item1从屏幕上消失了,item7出现了。与此同时, item1也变成了一scrapped view,我们有这时候有了两个scrapped view。(item 0, item 1) 这些项目将存储在一个废弃视图的集合中。

  4. 现在,当我们需要将item8加载到可见区域时,我们从的scrapped view集合中获取视图。从scrapped view集合加载的视图dirty view称为 . 此视图被回收并重新定位到队列中应显示在屏幕item8上。

截屏.png

这些流程是在recyclerview 中进行回收的方式,也是recyclerview 改进的主要原因之一。在这个过程中,item被重复使用以在屏幕上渲染新数据。

总结

由于 View Holders 和 Recycled Views,我们提高了 Recyclerview 的性能。下次有机会再通过源码分析吧。