RecyclerView源碼分析(一)為什么使用RecyclerView

分析RecycleView源碼的目的

RecycleView作為每一個App大概率都會使用的控件,重要性可見一斑。而這個控件使用起來是非常簡單的,但是了解其中的原理機理也是很重要的。我們可以從容的解決面臨的玄學問題。

這系列文章的主脈絡

了解RecyclerView,我們肯定要從大的主干看起,然后看看插在他身上的各種功能組件,然后再從整個控件整體架構上進行理解RecyclerView。這個主干就是RecycleView作為一個普通的UI控件,如何實現(xiàn)可滑動可復用列表的功能。
這里我們就有很多問題,比如,怎么實現(xiàn)滑動的?怎么實現(xiàn)各個item測量繪制排列的?緩存細節(jié)策略如何?什么時候進行緩存?各個組件之間怎么協(xié)作的?局部刷新怎么實現(xiàn)的?
所以,我們先看主干,再看滑動 - 緩存 - 各個組件(Adapter、LayoutManager、ItemAnimator和ItemDecoration),按照這個流程分析。
希望看這一些列文章時,可以先列出自己問題,帶著問題看。

概述

RecycleView原來有一個長輩就是ListView,這兩個有什么不一樣呢,RecycleView有什么優(yōu)點?我們?yōu)槭裁匆鎿Q掉ListView呢?

為什么要使用RecycleView代替ListView

RecycleView作為ListView的替代品,相對ListView是有很多優(yōu)點的。各部分功能更加強大,更容易擴展。

1.在緩存方面更加強大

兩者的緩存原理基本一致,緩存的單位略有差別,ListView緩存View,RecycleView緩存ViewHolder。但是RecycleView多了兩層緩存,并且也可以讓用戶自定義緩存策略,所有RecycleView可以共享一個緩存池。并且在屏幕外進入屏幕內時,滿足一定條件可以直接使用,不需要重新bind。這些都是ListView沒有的。

  1. 提供了局部刷新
    RecycleView提供了局部刷新的接口,并且底層也是根據(jù)數(shù)據(jù)源,在刷新時盡可能的少重新渲染沒有改變的item。所以在數(shù)據(jù)源頻繁更新的場景下,使用RecycleView效率更高。

  2. 提供了瀑布流,表格等多種UI
    原來使用ListView寫瀑布流是比較麻煩的,但是RecycleView提供了現(xiàn)成的LayoutManager供使用。同時表格也集成在了RecycleView里面。

  3. 靈活的插拔式組件
    RecycleView使用了插拔式的方式,集成了LayoutManager,ItemDecoration,ItemAnimator眾多組件。把各個功能都單獨封裝成了一個內聚的組件。更加方便我們的使用。比如我們需要一種新的布局方式,我們就可以自定義一個LayoutManager,對各個item進行重新的測量布局等,而不用關心其他的功能單元。

總結

RecycleView在需要頻繁更新的場景下,要進行局部刷新時,功能更加強大。并且也更容易擴展。這些都是我們RecycleView代替ListView的原因。

下一章:

RecycleView作為一個普通的UI控件是如何工作的?也就是要分析它的主干:測繪的三大流程。了解了主干,才能更了解上面的枝葉。下一章分析RecycleView作為一個普通的UI控件是如何工作的?

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容