Обзор библиотеки подкачки . Часть Android Jetpack .

Библиотека подкачки помогает загружать и отображать страницы данных из более крупного набора данных из локального хранилища или по сети. Такой подход позволяет вашему приложению более эффективно использовать пропускную способность сети и системные ресурсы. Компоненты библиотеки подкачки разработаны с учетом рекомендуемой архитектуры приложений Android , четко интегрируются с другими компонентами Jetpack и обеспечивают первоклассную поддержку Kotlin.

Преимущества использования библиотеки подкачки

Библиотека подкачки включает в себя следующие функции:

  • Кэширование в памяти для выгружаемых данных. Это помогает гарантировать, что ваше приложение эффективно использует системные ресурсы при работе с выгружаемыми данными.
  • Встроенная дедупликация запросов, которая помогает обеспечить эффективное использование пропускной способности сети и системных ресурсов вашим приложением.
  • Настраиваемые адаптеры RecyclerView , которые автоматически запрашивают данные, когда пользователь прокручивает данные к концу загруженных данных.
  • Первоклассная поддержка сопрограмм и потоков Kotlin, а также LiveData и RxJava.
  • Встроенная поддержка обработки ошибок, включая возможности обновления и повтора.

Оставьте отзыв

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Проверьте существующие проблемы для этой библиотеки, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию об отправке отзывов см . в документации по системе отслеживания проблем .

Настраивать

Чтобы импортировать компоненты подкачки в приложение Android, добавьте следующие зависимости в файл build.gradle вашего приложения:

классный

dependencies {
  def paging_version = "3.3.2"

  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:3.3.2"
}

Котлин

dependencies {
  val paging_version = "3.3.2"

  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:3.3.2")
}

Библиотечная архитектура

Компоненты библиотеки подкачки работают на трех уровнях вашего приложения:

  • Уровень репозитория
  • Слой ViewModel
  • Уровень пользовательского интерфейса
Изображение, показывающее потоки постраничных данных из компонентов PagingSource или RemoteMediator на уровне репозитория в компонент Pager на уровне ViewModel.     Затем компонент Pager предоставляет поток PagingData адаптеру PagingDataAdapter на уровне пользовательского интерфейса.
Рисунок 1. Пример того, как библиотека подкачки вписывается в архитектуру вашего приложения.

В этом разделе описываются компоненты библиотеки подкачки, которые работают на каждом уровне, и то, как они работают вместе для загрузки и отображения постраничных данных.

Уровень репозитория

Основным компонентом библиотеки подкачки на уровне репозитория является PagingSource . Каждый объект PagingSource определяет источник данных и способ получения данных из этого источника. Объект PagingSource может загружать данные из любого источника, включая сетевые источники и локальные базы данных.

Еще один компонент библиотеки подкачки, который вы можете использовать, — RemoteMediator . Объект RemoteMediator обрабатывает подкачку из многоуровневого источника данных, например сетевого источника данных с кэшем локальной базы данных.

Слой ViewModel

Компонент Pager предоставляет общедоступный API для создания экземпляров PagingData , которые предоставляются в реактивных потоках, на основе объекта PagingSource и объекта конфигурации PagingConfig .

Компонентом, который соединяет уровень ViewModel с пользовательским интерфейсом, является PagingData . Объект PagingData — это контейнер для моментального снимка данных с разбивкой на страницы. Он запрашивает объект PagingSource и сохраняет результат.

Уровень пользовательского интерфейса

Основным компонентом библиотеки подкачки на уровне пользовательского интерфейса является PagingDataAdapter , адаптер RecyclerView , который обрабатывает данные с разбивкой на страницы.

Альтернативно вы можете использовать включенный компонент AsyncPagingDataDiffer для создания собственного адаптера.

Дополнительные ресурсы

Чтобы узнать больше о библиотеке подкачки, см. следующие дополнительные ресурсы:

Кодлабы

Образцы

{% дословно %} {% дословно %} {% дословно %} {% дословно %}