Visão geral da biblioteca Paging   Parte do Android Jetpack.

A biblioteca Paging ajuda a carregar e exibir páginas de um conjunto de dados maior do armazenamento local ou da rede. Essa abordagem permite que o app use a largura de banda da rede e os recursos do sistema de modo mais eficiente. Os componentes da biblioteca Paging foram projetados para se ajustar à arquitetura de apps Android recomendada, integrar-se de forma limpa a outros componentes do Jetpack e fornecer compatibilidade de alto nível com Kotlin.

Benefícios do uso da biblioteca Paging

A biblioteca Paging inclui os seguintes recursos:

  • Armazenamento em cache na memória dos dados paginados. Isso garante que seu app use recursos do sistema de maneira eficiente enquanto trabalha com dados paginados.
  • Eliminação de duplicação de solicitação integrada, garantindo que seu app use recursos de sistema e largura de banda de rede de forma eficiente.
  • Adaptadores RecyclerView configuráveis que solicitam automaticamente os dados à medida que o usuário rola para o final dos dados carregados.
  • Compatibilidade de alto nível com corrotinas e fluxo do Kotlin, além de LiveData e RxJava.
  • Compatibilidade integrada com tratamento de erros, incluindo recursos de atualização e repetição.

Enviar feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver sugestões para melhorar essa biblioteca. Consulte os problemas existentes dessa biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Configurar

Para importar componentes da biblioteca Paging para seu app Android, adicione as seguintes dependências ao arquivo build.gradle do app:

Groovy

dependencies {
  def paging_version = "3.0.0"

  implementation "androidx.paging:paging-runtime:$paging_version"

  // alternatively - without Android dependencies for tests
  testImplementation "androidx.paging:paging-common:$paging_version"

  // optional - RxJava2 support
  implementation "androidx.paging:paging-rxjava2:$paging_version"

  // optional - RxJava3 support
  implementation "androidx.paging:paging-rxjava3:$paging_version"

  // optional - Guava ListenableFuture support
  implementation "androidx.paging:paging-guava:$paging_version"

  // optional - Jetpack Compose integration
  implementation "androidx.paging:paging-compose:1.0.0-alpha11"
}

Kotlin

dependencies {
  val paging_version = "3.0.0"

  implementation("androidx.paging:paging-runtime:$paging_version")

  // alternatively - without Android dependencies for tests
  testImplementation("androidx.paging:paging-common:$paging_version")

  // optional - RxJava2 support
  implementation("androidx.paging:paging-rxjava2:$paging_version")

  // optional - RxJava3 support
  implementation("androidx.paging:paging-rxjava3:$paging_version")

  // optional - Guava ListenableFuture support
  implementation("androidx.paging:paging-guava:$paging_version")

  // optional - Jetpack Compose integration
  implementation("androidx.paging:paging-compose:1.0.0-alpha11")
}

Arquitetura da biblioteca

A biblioteca Paging se integra diretamente à arquitetura de apps Android recomendada. Os componentes da biblioteca operam em três camadas do app:

  • Camada de repositório
  • Camada ViewModel
  • Camada de IU
Os dados paginados passam dos componentes PagingSource ou RemoteMediator
    na camada de repositório para o componente Pager na camada ViewModel.
    Em seguida, o componente Pager expõe um fluxo de PagingData ao
PagingDataAdapter na camada de IU.
Figura 1. Um exemplo de como a biblioteca Paging se encaixa na arquitetura do app.

Esta seção descreve os componentes da biblioteca Paging que operam em cada camada e como eles funcionam juntos para carregar e exibir dados paginados.

Camada de repositório

O principal componente da biblioteca Paging na camada de repositório é PagingSource. Cada objeto PagingSource define uma fonte de dados e como recuperar dados dela. Um objeto PagingSource pode carregar dados de uma única fonte, incluindo fontes de rede e bancos de dados locais.

Outro componente da biblioteca Paging que você pode usar é RemoteMediator. Um objeto RemoteMediator processa a paginação de uma fonte de dados em camadas, como uma fonte de dados de rede com um cache de banco de dados local.

Camada ViewModel

O componente Pager fornece uma API pública para criar instâncias de PagingData que são expostas em fluxos reativos, com base em um objeto PagingSource e em um objeto de configuração PagingConfig.

O componente que conecta a camada ViewModel à IU é PagingData. Um objeto PagingData é um contêiner para um resumo de dados paginados. Ele consulta um objeto PagingSource e armazena o resultado.

Camada de IU

O componente principal da biblioteca Paging na camada da IU é PagingDataAdapter, um adaptador RecyclerView que processa dados paginados.

Se preferir, use o componente AsyncPagingDataDiffer incluído para criar seu próprio adaptador personalizado.

Outros recursos

Para saber mais sobre a biblioteca Paging, consulte os seguintes recursos extras:

Codelabs

Amostras