Paging - SMAXLYB/JetpackPractice GitHub Wiki

Paging

开发时需要以分页的形式加载大量数据,数据来源可以是本地或者网络,Paging按需加载,提升应用性能。

  • 原理:

    RecyclerView滑动触发PagedListAdapter中的onBindViewHolder()方法,当RecyclerView到达底部时,需要加载新的数据,在onBindViewHolder()中调用getItem(),通知PagedList载入更多数据,PagedList会根据PageList.Config中的配置通知DataSource获取数据,DataSource从网络/本地获取数据,交给PagedList,PagedList将数据交给PagedListAdapter中的DiffUtil进行比较,最后展示在RecyclerView中。

  • 3种架构:

  1. 从网络加载
    • PositionalDataSource 例:加载从第3条数据往后的5条数据
    • PageKeyedDataSource 例:加载第2页的5条数据
    • ItemKeyedDataSource 例:以上个字段为key,加载key后的5条数据
  2. 从数据库加载
  3. 先从网络加载,存储到数据库,然后从数据库加载 BoundaryCallback