Пейджинг

Библиотека подкачки упрощает постепенную и корректную загрузку данных в RecyclerView вашего приложения.

В этой таблице перечислены все артефакты в группе androidx.paging .

Артефакт Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
пейджинг-* 3.3.5 - - -
подкачка-создание 3.3.5 - - -
Последнее обновление этой библиотеки: 11 декабря 2024 г.

Объявление зависимостей

Чтобы добавить зависимость от Paging, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл 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")
}

Информацию об использовании расширений Kotlin смотрите в документации ktx .

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

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

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

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

Версия 3.3

Версия 3.3.5

11 декабря 2024 г.

Выпущен androidx.paging:paging-*:3.3.5 . Версия 3.3.5 содержит эти коммиты .

Исправления ошибок

  • Исправлена ​​ошибка, из-за которой RecyclerView выдает исключение IndexOutOfBoundsException , когда пользователь прокручивает страницу во время обновления RecyclerView . ( Id1f16 , б/381024738 )

Версия 3.3.4

13 ноября 2024 г.

Выпущен androidx.paging:paging-*:3.3.4 . Версия 3.3.4 содержит эти коммиты .

Исправления ошибок

  • Модульные тесты Android, выполняемые в Paging 3.3 или более поздней версии, больше не будут выдавать ошибку, такую ​​как Method isLoggable in android.util.Log not mocked . ( Я9400 , б/331684448 )

Версия 3.3.2

7 августа 2024 г.

Выпущен androidx.paging:paging-*:3.3.2 . Версия 3.3.2 содержит эти коммиты .

Новые возможности

  • paging-common и paging-testing добавили новые цели Kotlin-Multiplatform: watchos , tvos и linuxArm64 ( 90c9768 ), ( 53e0eca ).

Версия 3.3.1

24 июля 2024 г.

Выпущен androidx.paging:paging-*:3.3.1 . Версия 3.3.1 содержит эти коммиты .

Исправления ошибок

  • Исправлена ​​проблема, из-за которой AsyncPagingDataDiffer или API-интерфейсы, построенные на его основе, такие как PagingDataAdapter , используемый с RecyclerView не могли инициировать дополнительные загрузки, когда резервный источник данных обновлялся во время прокрутки. ( I60ca5 , б/352586078 )
  • Исправлен сбой, возникающий при удалении элементов из резервного источника данных при прокрутке RecyclerView с использованием PagingDataAdapter или AsyncPagingDataDiffer . ( I8c65a , б/347649763 )

Версия 3.3.0

14 мая 2024 г.

Выпущен androidx.paging:paging-*:3.3.0 . Версия 3.3.0 содержит эти коммиты .

Важные изменения с версии 3.2.0

  • PagingDataPresenter теперь является общедоступным классом. Многоплатформенные презентаторы теперь можно создавать поверх PagingDataPresenter вместо необходимости использования внутренних API-интерфейсов пейджинга или AsyncPagingDataDiffer paging-runtime .
  • Добавлены новые вспомогательные методы LoadStates и CombinedLoadStates в hasError и isIdle для проверки того, находится ли LoadStates в состоянии Error или NotLoading соответственно. Также добавлен новый метод расширения Kotlin awaitNotLoading() для Flow<CombinedLoadStates> , который ожидает, пока загрузка не перейдет в состояние NotLoading или Error.
  • PagingData.empty() теперь по умолчанию отправляет состояния NotLoading , если в его конструктор не передаются пользовательские LoadStates . Это отличается от существующего поведения, когда оно не отправляет LoadStates при отправке в PagingDataAdapter или отправляет состояния загрузки при сборе как LazyPagingItems . При сборе как LazyPagingItems он теперь также будет отображать пустой список сразу после первоначальной композиции.

Мультиплатформенная совместимость Kotlin

Пейджинг теперь предоставляет артефакты, совместимые с Kotlin Multiplatform, во многом благодаря работе над проектом мультиплатформенного пейджинга CashApp.

  • paging-common перевел все API-интерфейсы Paging 3 на common и теперь совместим с jvm и iOS в дополнение к Android.
  • paging-testing перевел свой код на common и теперь совместим не только с Android, но и с jvm и iOS.
  • paging-compose перенес свой код в common и поставляет артефакт Android, соответствующий многоплатформенной поддержке androidx.compose .
  • paging-runtime , paging-guava , paging-rxjava2 и paging-rxjava3 останутся только для Android.

Версия 3.3.0-rc01

1 мая 2024 г.

androidx.paging:paging-*:3.3.0-rc01 выпущен без изменений в Paging 3.3.0-beta01. Версия 3.3.0-rc01 содержит эти коммиты .

Версия 3.3.0-бета01

3 апреля 2024 г.

androidx.paging:paging-*:3.3.0-beta01 выпущен без заметных изменений. Версия 3.3.0-beta01 содержит эти коммиты .

Версия 3.3.0-альфа05

20 марта 2024 г.

Выпущен androidx.paging:paging-*:3.3.0-alpha05 . Версия 3.3.0-alpha05 содержит эти коммиты .

Изменения API

  • Пейджинг теперь использует аннотацию AndroidX @MainThread для общего кода. ( I78f0d , б/327682438 )

Версия 3.3.0-альфа04

6 марта 2024 г.

Выпущен androidx.paging:paging-*:3.3.0-alpha04 . Версия 3.3.0-alpha04 содержит эти коммиты .

Исправления ошибок

  • Исправлены незначительные ошибки документации, связанные с добавлением мультиплатформенной совместимости Kotlin. ( аосп/2950785 )

Версия 3.3.0-альфа03

7 февраля 2024 г.

Выпущен androidx.paging:paging-*:3.3.0-alpha03 . Версия 3.3.0-alpha03 содержит эти коммиты.

Новые возможности

  • PagingDataPresenter теперь является общедоступным классом. Многоплатформенные презентаторы теперь можно создавать поверх PagingDataPresenter вместо необходимости использования внутренних API-интерфейсов пейджинга или AsyncPagingDataDiffer paging-runtime . ( Id1f74 , б/315214786 )
  • Добавлены новые вспомогательные методы LoadStates и CombinedLoadStates , позволяющие проверить, находится ли LoadStates в состоянии Error или NotLoading . Также добавлен новый API, который ожидает LoadStateFlow до тех пор, пока загрузка не перейдет в состояние NotLoading или Error. ( ID6c67 )

Изменение поведения

  • PagingData.empty() теперь по умолчанию отправляет состояния NotLoading , если его конструктору не передаются пользовательские LoadStates . Это отличается от существующего поведения, когда оно не отправляет LoadStates при отправке в PagingDataAdapter или отправляет состояния загрузки при сборе как LazyPagingItems . При сборе как LazyPagingItems он теперь также будет отображать пустой список сразу после первоначальной композиции. ( I4d11d , б/301833847 )

Версия 3.3.0-альфа02

20 сентября 2023 г.

Выпущен androidx.paging:paging-*:3.3.0-alpha02 . Версия 3.3.0-alpha02 содержит эти коммиты.

Мультиплатформенная совместимость Kotlin

Пейджинг теперь предоставляет артефакты, совместимые с Kotlin Multiplatform, во многом благодаря работе над проектом мультиплатформенного пейджинга CashApp. Это позволит нам избежать расхождений между двумя репозиториями и сохранить их совместимость.

  • paging-common перевел все API-интерфейсы Paging 3 на common и теперь совместим с jvm и iOS в дополнение к Android.
  • paging-testing перевел свой код на common и теперь совместим не только с Android, но и с jvm и iOS.
  • paging-compose перенес свой код в common и поставляет артефакт Android, соответствующий многоплатформенной поддержке androidx.compose .
  • paging-runtime , paging-guava , paging-rxjava2 и paging-rxjava3 останутся только для Android.

Изменения API

  • Публичный интерфейс Logger, предназначенный только для внутреннего использования, устарел ( I16e95 , b/288623117 ).

Внешний вклад

Версия 3.3.0-альфа01

20 сентября 2023 г.

  • Это первый мультиплатформенный выпуск библиотек androidx.paging. В этой версии есть только артефакты *-jvm и *-android . Для вариантов macOS, iOS и Linux используйте 3.3.0-alpha02 .

Версия 3.2

Версия 3.2.1

6 сентября 2023 г.

Выпущен androidx.paging:paging-*:3.2.1 . Версия 3.2.1 содержит эти коммиты.

Исправления ошибок

  • Исправлена ​​проблема, из-за которой API asSnapshot() артефакта тестирования подкачки зависал при передаче потока, созданного с использованием PagingData.from(List) , поскольку asSnapshot() не имел никакой информации о завершении загрузки (в отличие от PagingData.from(List, LoadStates) перегрузка). Этот обходной путь работает только для завершаемых потоков (например, flowOf(PagingData.from(...)) ). Для незавершаемых потоков (например, MutableStateFlow используйте перегрузку PagingData.from , которая предоставляет LoadStates ). ( I502c3 )
  • Paging Compose теперь внутренне использует AndroidUiDispatcher.Main , чтобы гарантировать, что новые данные будут доступны в том же кадре после завершения загрузки. ( Ia55af )

Версия 3.2.0

26 июля 2023 г.

Выпущен androidx.paging:paging-*:3.2.0 . Версия 3.2.0 содержит эти коммиты.

Важные изменения с версии 3.1.0

  • Paging Compose достиг стабильности API и был снова объединен с остальной частью Paging, где его версия теперь соответствует всем остальным артефактам Paging. Изменения с версии 3.1.0 включают в себя:
    • Поддержка предварительного просмотра списка поддельных данных путем создания PagingData.from(fakeData) и упаковки этих PagingData в MutableStateFlow (например, MutableStateFlow(PagingData.from(listOf(1, 2, 3))) ). Передайте этот поток в составные элементы @Preview в качестве приемника для collectAsLazyPagingItems() для предварительного просмотра.
    • Поддержка всех ленивых макетов, таких как LazyVerticalGrid и HorizontalPager а также пользовательских ленивых компонентов из библиотек Wear и TV. Это было достигнуто за счет новых методов расширения LazyPagingItems нижнего уровня itemKey и itemContentType , которые помогают реализовать параметры key и contentType в API стандартных items , которые уже существуют для LazyColumn , LazyVerticalGrid , а также их эквивалентов в API, таких как HorizontalPager .
    • items(lazyPagingItems) и itemsIndexed(lazyPagingItems) которые поддерживают только LazyListScope , устарели.
  • Новый артефакт paging-testing , который предоставляет API-интерфейсы, разработанные для модульного тестирования каждого уровня вашего приложения и его изолированной интеграции с подкачкой. Например, он включает в себя
    • Класс TestPager , который позволяет проверять поведение вашей собственной реализации PagingSource независимо от пейджера и реального пользовательского интерфейса.
    • API asPagingSourceFactory для преобразования Flow<List<Value>> или статического List<Value> в PagingSourceFactory , который можно передать пейджеру в тестах.
    • asSnapshot Kotlin расширение для Flow<PagingData<Value>> , которое преобразует Flow<PagingData<Value>> в прямой List<Value> . asSnapshot lambda позволяет имитировать пользовательский интерфейс вашего приложения с помощью таких API, как scrollTo или appendScrollWhile , чтобы вы могли проверить правильность моментального снимка данных в любой точке вашего набора выгружаемых данных.
  • Добавлены журналы по умолчанию для предоставления информации об отладке подкачки на двух уровнях: VERBOSE и DEBUG . Журналы можно включить с помощью команды adb shell setprop log.tag.Paging [DEBUG|VERBOSE] . Это относится как к пейджингу с представлениями, так и к пейджингу с помощью Compose.
  • Добавлены конструкторы для PagingDataAdapter и AsyncPagingDataDiffer , которые принимают CoroutineContext вместо CoroutineDispatcher .
  • Добавлен новый функциональный интерфейс PagingSourceFactory , который обеспечивает более явную поверхность API, чем предыдущий () -> лямбда-выражения PagingSource . Эту фабрику можно использовать для создания экземпляра пейджера.

Версия 3.2.0-rc01

21 июня 2023 г.

Выпущен androidx.paging:paging-*:3.2.0-rc01 . Версия 3.2.0-rc01 содержит эти коммиты.

Внешний вклад

Версия 3.2.0-бета01

7 июня 2023 г.

Выпущен androidx.paging:paging-*:3.2.0-beta01 . Версия 3.2.0-beta01 содержит эти коммиты.

Пейджинговое создание

  • Paging Compose официально достиг стабильности API. Таким образом, версия была обновлена ​​с 1.0.0-alpha20 и теперь соответствует версии всех других артефактов пейджинга.

Изменения API

Версия 3.2.0-альфа06

24 мая 2023 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha06 . Версия 3.2.0-alpha06 содержит эти коммиты.

Новые возможности

  • Добавлен новый функциональный интерфейс PagingSourceFactory , который обеспечивает более явную поверхность API, чем существующие лямбды () -> PagingSource . Эту фабрику можно использовать для создания экземпляра Pager . ( I33165 , б / 280655188 )
  • Добавлен новый API paging-testing подкачки List<Value>.asPagingSourceFactory() чтобы получить PagingSourceFactory , который загружается только из неизменяемого списка данных. Существующее расширение Flow<List<Value>> по-прежнему следует использовать для тестирования с несколькими поколениями статических данных. ( Id34d1 , б/280655188 )

Изменения API

  • Все общедоступные API при тестировании подкачки теперь помечены @VisibleForTesting чтобы гарантировать использование этих API только в тестах. ( I7db6e )
  • API asSnapshot больше не требует передачи CoroutineScope . Теперь по умолчанию используется контекст, унаследованный от родительской области. ( Id0a78 , б/282240990 )
  • Переупорядочены параметры конструктора TestPager чтобы интуитивно соответствовать порядку реальных параметров конструктора Pager ( I6185a ).
  • Использование лямбда-типа () -> PagingSource<Key, Value> при тестировании подкачки перенесено на тип PagingSourceFactory<Key, Value> . ( I4a950 , б/280655188 )

Изменения поведения

  • Главный диспетчер больше не требуется для запуска тестов asSnapshot Paging. Его установка больше не вносит никаких изменений в поведение теста. ( Ie56ea )

Версия 3.2.0-альфа05

3 мая 2023 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha05 . Версия 3.2.0-alpha05 содержит эти коммиты.

Изменения API

  • API тестирования пейджинга asSnapshot теперь по умолчанию устанавливает для параметра loadOperations пустое лямбда-выражение. Это позволяет вызывать asSnapshot без каких-либо операций загрузки для получения данных из начальной загрузки обновления. ( Ied354 , б/277233770 )

Улучшения документации

  • Обновлена ​​документация по asPagingSourceFactory() чтобы уточнить, что это метод расширения Flow , который возвращает повторно используемую фабрику для создания экземпляров PagingSource . ( I5ff4f , I705b5 )
  • Обновлена ​​документация по конструктору LoadResult.Page , чтобы уточнить необходимость переопределения itemsBefore и itemsAfter для поддержки перехода. ( Ied354 )

Внешние взносы

Версия 3.2.0-альфа04

8 февраля 2023 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha04 . Версия 3.2.0-alpha04 содержит эти коммиты.

Пейджинговое тестирование

  • Артефакт paging-testing теперь содержит метод asPagingSourceFactory для создания pagingSourceFactory из Flow<List<Value>> для передачи в пейджер. Каждый List<Value>> исходящий из потока, представляет собой генерацию постраничных данных. Это облегчает тестирование подкачки, например, преобразований PagingData , имитируя источник данных, из которого пейджер может собирать данные. ( I6f230 , б/235528239 )
  • Артефакт paging-testing был расширен новыми API, подходящими для проверки правильности данных, содержащихся в Flow<PagingData<T>> . Это можно использовать, например, для подтверждения вывода Flow<PagingData<T>> из уровня ViewModel.

    Это делается с помощью расширения asSnapshot Kotlin для Flow<PagingData<Value>> , которое преобразует Flow<PagingData<Value>> в прямой List<Value> . Лямбда-выражение asSnapshot позволяет имитировать пользовательский интерфейс вашего приложения с помощью API-интерфейсов, таких как scrollTo или appendScrollWhile повторяемым и последовательным образом, чтобы вы могли проверить правильность моментального снимка данных в любой точке вашего набора выгружаемых данных.

    // Create your ViewModel instance
    val viewModel = 
    // Get the Flow of PagingData from the ViewModel
    val data< Flow<PagingData<String>> = viewModel.data
    val snapshot: List<String> = data.asSnapshot {
      // Each operation inside the lambda waits for the data to settle before continuing
      scrollTo(index = 50)
    
      // While you can’t view the items within the asSnapshot call,
      // you can continuously scroll in a direction while some condition is true
      // i.e., in this case until you hit a placeholder item
      appendScrollWhile {  item: String -> item != Header 1 }
    }
    // With the asSnapshot complete, you can now verify that the snapshot
    // has the expected values
    

    asSnapshot — это метод suspend , который, как ожидается, будет запущен в рамках runTest . Дополнительную информацию см. в разделе «Тестирование сопрограмм Kotlin на Android» . ( I55fd2 , I5bd26 , I7ce34 , I51f4d , I2249f , Id6223 , Ic4bab , Ib29b9 , Ic1238 , I96def , b/235528239 )

Изменения API

  • Вызовы пользовательского интерфейса для getItem и peek в AsyncPagingDataDiffer и PagingDataAdapter теперь правильно помечаются как вызываемые только в основном потоке. ( I699b6 )
  • Из универсальных типов, используемых TestPager , удалены подстановочные знаки, что упрощает использование результатов этих методов в коде, написанном на языке программирования Java. ( I56c42 )

Версия 3.2.0-альфа03

24 октября 2022 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha03 . Версия 3.2.0-alpha03 содержит эти коммиты.

Пейджинговое тестирование

Этот выпуск содержит новый артефакт: paging-testing . Этот артефакт предоставляет API-интерфейсы, разработанные для модульного тестирования каждого уровня вашего приложения и его изолированной интеграции с пейджингом.

Например, этот первый выпуск включает класс TestPager , который позволяет вам проверять поведение вашей собственной пользовательской реализации PagingSource независимо от Pager и реального пользовательского интерфейса, который обычно необходим для имитации сквозной интеграции Paging.

TestPager следует считать подделкойтестовым двойником , который отражает реальную реализацию Pager , одновременно предоставляя упрощенную поверхность API для тестирования PagingSource . Эти API являются API suspend , и их следует запускать в рамках runTest как описано в руководстве по тестированию сопрограмм Kotlin на Android .

Пример использования этих API можно найти в тестах room-paging , которые были реорганизованы для использования TestPager .

Изменения API

  • Обеспечивает удобную итерацию над LoadResult.Page.data с помощью LoadResult.Page.iterator() . Это косвенно позволяет использовать метод flatten стандартной библиотеки Kotlin при наличии List<LoadResult.Page> , например, со свойством pages PagingState , которое передается методу PagingSource.getRefreshKey . ( Ie0718 )

Версия 3.2.0-альфа02

10 августа 2022 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha02 . Версия 3.2.0-alpha02 содержит эти коммиты.

Новые возможности

  • Пейджинг теперь предоставляет журналы через классы AsyncPagingDataDiffer или PagingDataAdapter для предоставления отладочной информации, собранной из PagingData .
  • Журналы можно включить с помощью команды adb shell adb shell setprop log.tag.Paging [DEBUG|VERBOSE]. ( б / 235527159 )

Исправления ошибок

  • Исправлена ​​отсутствующая ошибка конструктора PagingDataDiffer при использовании paging-common:3.2.0-alpha01 со средой выполнения paging-runtime:3.1.1 или более ранней версии. ( b/235256201 ).

Версия 3.2.0-альфа01

1 июня 2022 г.

Выпущен androidx.paging:paging-*:3.2.0-alpha01 . Версия 3.2.0-alpha01 содержит эти коммиты.

Изменения API

  • Добавлены конструкторы для PagingDataAdapter и AsyncPagingDataDiffer , которые принимают CoroutineContext вместо CoroutineDispatcher . ( Idc878 )
  • По умолчанию PagingData.from() и PagingData.empty() больше не влияют на CombinedLoadStates на стороне презентатора. Была добавлена ​​новая перегрузка, которая позволяет передавать sourceLoadStates и remoteLoadStates в эти конструкторы, чтобы сохранить существующее поведение установки LoadStates как полностью терминального (т. е. NotLoading(endOfPaginationReached = false) ), с возможностью включения при необходимости и удаленных состояний. . Если LoadStates не переданы, то предыдущие значения CombinedLoadStates будут сохранены на стороне презентатора, когда он получит статические PagingData . ( Ic3ce5 , б/205344028 )

Исправления ошибок

  • Результат PagingSource.getRefreshKey() теперь правильно присваивается приоритету initialKey в тех случаях, когда он возвращает значение NULL, но был установлен ненулевой initialKey . ( Ic9542 , б/230391606 )

Внешний вклад

  • Обновлено :compose:ui:ui-test api (updateApi) из-за миграции test-coroutines-lib ( I3366d )

Версия 3.1

Версия 3.1.1

9 марта 2022 г.

Выпущен androidx.paging:paging-*:3.1.1 . Версия 3.1.1 содержит эти коммиты.

Исправления ошибок

  • Удалены промежуточные события LoadState.NotLoading между поколениями, которые были неправильно вставлены с помощью .cachedIn() . Это изменение значительно упрощает реагирование на изменения LoadState за счет удаления избыточных событий LoadState.NotLoading , которые создавались между повторными попытками неудачной загрузки, при обновлении или во время аннулирования.

Версия 3.1.0

17 ноября 2021 г.

Выпущен androidx.paging:paging-*:3.1.0 . Версия 3.1.0 содержит эти коммиты.

Важные изменения с версии 3.0.0

  • API Flow<PagingData>.observable и Flow<PagingData>.flowable больше не являются экспериментальными.
  • Изменения в поведении LoadState :
    • endOfPaginationReached теперь всегда имеет false для LoadType.REFRESH как для PagingSource так и для RemoteMediator
    • LoadStates из Paging теперь ожидает действительных значений как от PagingSource , так и от RemoteMediator перед отправкой в ​​нисходящий поток. Новые поколения PagingData теперь всегда будут правильно начинаться с состояния Loading для обновления», а не с неправильным сбросом в состояние NotLoading в некоторых случаях.
    • .loadStateFlow и .addLoadStateListener в API-интерфейсах презентаторов больше не отправляют избыточно начальные значения CombinedLoadStates , в которых состояния посредника всегда имеют значение null
  • Отмена прошлых поколений теперь быстро происходит при аннулировании/новых поколениях. Больше не требуется использовать .collectLatest в Flow<PagingData> , хотя это по-прежнему рекомендуется делать.
  • PagingSource.LoadResult.Invalid был добавлен как новый тип возвращаемого значения из PagingSource.load , что заставляет Paging отбрасывать все ожидающие или будущие запросы загрузки к этому PagingSource и делать его недействительным. Этот тип возврата предназначен для обработки потенциально недопустимых или устаревших данных, которые могут быть возвращены из базы данных или сети.
  • Добавлены API-интерфейсы презентаторов .onPagesPresented и .addOnPagesUpdatedListener , которые активируются синхронно при представлении страниц в пользовательском интерфейсе. Обновления страницы могут происходить в следующих сценариях:
    • Первоначальная загрузка PagingData нового поколения завершается независимо от того, содержит ли новое поколение какие-либо изменения в представленных элементах. т. е. новое поколение, завершающее начальную загрузку без обновлений, поскольку список точно такой же, все равно вызовет этот обратный вызов.
    • Страница вставляется, даже если вставленная страница не содержит новых элементов.
    • Страница удаляется, даже если удаленная страница была пустой.

Версия 3.1.0-rc01

3 ноября 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-rc01 . Версия 3.1.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Исправлено состояние гонки + утечка памяти в .cachedIn() в случаях, когда несколько событий загрузки отправлялись нисходящим Paging при отсутствии наблюдателей или между моментами, когда наблюдатель переключался на новый PagingData. ( Ib682e )

Версия 3.1.0-бета01

13 октября 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-beta01 . Версия 3.1.0-beta01 содержит эти коммиты.

Исправления ошибок

  • Исправлена ​​проблема, из-за которой при частом быстром доступе к элементам они могли быть отброшены на рассмотрение в prefetchDistance, что приводило к остановке загрузки страниц. Это особенно проблема, когда множество элементов расположены одновременно в таком порядке, при котором приоритет загрузки будет зависеть от направления прокрутки пользователя. Доступ к этим элементам теперь буферизуется и синхронно распределяется по приоритетам, чтобы предотвратить их удаление. ( аосп/1833273 )

Версия 3.1.0-альфа04

29 сентября 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-alpha04 . Версия 3.1.0-alpha04 содержит эти коммиты.

Изменения API

  • API-интерфейсы Flow<PagingData>.observable и Flow<PagingData>.flowable больше не являются экспериментальными. ( Ie0bdd )

Исправления ошибок

  • Для LoadStates endOfPaginationReached теперь всегда имеет false для LoadType.REFRESH . Раньше endOfPaginationReached могло иметь значение true для RemoteMediator REFRESH , но не для PagingSource. Это поведение теперь консолидировано, чтобы всегда возвращать false поскольку REFRESH никогда не имеет смысла быть терминальным, и теперь документировано как часть контракта API в LoadStates. Принимая решение о прекращении нумерации страниц, вы всегда должны делать это в отношении направлений APPEND или PREPEND. ( I047b6 )
  • LoadStates из Paging теперь ожидает действительных значений как от PagingSource, так и от RemoteMediator, прежде чем отправлять их в нисходящий поток между поколениями. Это не позволяет новым поколениям PagingData отправлять NotLoading в CombindLoadStates.source.refresh, если он уже загружался; новые поколения PagingData теперь всегда будут правильно начинаться с состояния «Загрузка для обновления» вместо неправильного предварительного сброса в состояние «Незагрузка» в некоторых случаях.

    Отмена прошлых поколений теперь с готовностью происходит при аннулировании/новых поколениях. Больше не требуется использовать .collectLatest в Flow<PagingData> , хотя это по-прежнему настоятельно рекомендуется. ( I0b2b5 , б / 177351336 , б / 195028524 )

  • .loadStateFlow и .addLoadStateListener в API-интерфейсах презентаторов больше не отправляют избыточно начальные значения CombinedLoadStates , для которых состояния посредника всегда имеют значение null , а состояния источника — NotLoading(endOfPaginationReached = false) . Это означает, что:

    1. состояния посредника всегда будут заполняться, если вы используете RemoteMediator.
    2. Регистрация нового прослушивателя loadState или нового сборщика в .loadStateFlow больше не будет немедленно выдавать текущее значение, если он не получил настоящий CombinedLoadStates от PagingData . Это может произойти, если сборщик или прослушиватель запускается до отправки PagingData . ( I1a748 )

Версия 3.1.0-альфа03

21 июля 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-alpha03 . Версия 3.1.0-alpha03 содержит эти коммиты.

Изменения API

  • Третий возвращаемый тип LoadResult LoadResult.Invalid добавляется в PagingSource. Когда PagingSource.load возвращает LoadResult.Invalid, пейджинг отбрасывает загруженные данные и делает PagingSource недействительным. Этот тип возврата предназначен для обработки потенциально недопустимых или устаревших данных, которые могут быть возвращены из базы данных или сети.

    Например, если базовая база данных записывается, но PagingSource не становится недействительным вовремя, он может возвращать противоречивые результаты, если его реализация зависит от неизменности резервного набора данных, из которого он загружается (например, реализации базы данных в стиле LIMIT OFFSET). В этом сценарии рекомендуется проверить недействительность после загрузки и вернуть LoadResult.Invalid, что приведет к тому, что Paging отбросит все ожидающие или будущие запросы загрузки к этому PagingSource и сделает его недействительным.

    Этот тип возвращаемого значения также поддерживается API Paging2, который использует LivePagedList или RxPagedList. При использовании PagingSource с API-интерфейсами PagedList Paging2 PagedList немедленно отсоединяется, останавливая дальнейшие попытки загрузки данных в этот PagedList и инициируя аннулирование PagingSource.

    LoadResult — это запечатанный класс, что означает, что это изменение, несовместимое с исходным кодом, поэтому варианты использования, непосредственно использующие результаты PagingSource.load, должны будут обрабатывать LoadResult.Invalid во время компиляции. Например, пользователям Kotlin, использующим исчерпывающую проверку типа возвращаемого значения, придется добавить проверку на недопустимый тип. ( Id6bd3 , б/191806126 , б/192013267 )

Исправления ошибок

  • Обратные вызовы недействительности, добавленные через PagingSource.registerInvalidatedCallback или DataSource.addInvalidatedCallback, теперь автоматически срабатывают, если они были зарегистрированы в PagingSource/DataSource, который уже был недействителен. Это устраняет состояние гонки, из-за которого пейджинг отбрасывал сигналы недействительности и зависал при предоставлении источника, который уже был недействителен во время начальной загрузки. Кроме того, недействительные обратные вызовы теперь корректно удаляются после запуска, поскольку они гарантированно будут вызваны не более одного раза. ( I27e69 )
  • Отправка начального значения заполнителя (InitialPagedList) из вновь созданного потока PagedList, например LivePagedListBuilder или RxPagedListBuilder, больше не приведет к удалению ранее загруженных данных.

Версия 3.1.0-альфа02

1 июля 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-alpha02 . Версия 3.1.0-alpha02 содержит эти коммиты.

Новые возможности

  • Добавлены API-интерфейсы прослушивателя onPagesPresented и презентатора потока, которые срабатывают сразу после обновления представленных страниц в пользовательском интерфейсе.

    Поскольку эти обновления синхронизируются с пользовательским интерфейсом, вы можете вызывать методы адаптера, такие как .snapshot, .getItemCount, для проверки состояния после применения обновления. Обратите внимание, что .snapshot() оставлен для явного вызова, поскольку его выполнение при каждом обновлении может быть дорогостоящим.

    Обновления страницы могут происходить в следующих сценариях:

    • Первоначальная загрузка PagingData нового поколения завершается независимо от того, содержит ли новое поколение какие-либо изменения в представленных элементах. т. е. новое поколение, завершающее начальную загрузку без обновлений, поскольку список точно такой же, все равно вызовет этот обратный вызов.
    • Страница вставляется, даже если вставленная страница не содержит новых элементов.
    • Страница удаляется, даже если удаленная страница была пустой ( I272c9 , b/189999634 ).

Исправления ошибок

  • Доступ к PagedList.dataSource из исходного значения, созданного LivePagedList или RxPagedList, больше не будет ошибочно вызывать исключение IllegalStateException ( I96707 ).

Версия 3.1.0-альфа01

2 июня 2021 г.

Выпущен androidx.paging:paging-*:3.1.0-alpha01 . Версия 3.1.0-alpha01 содержит эти коммиты.

Изменения API

  • Классы, предоставляемые paging-rxjava3 , теперь находятся в пакете androidx.paging.rxjava3 , чтобы они не конфликтовали с paging-rxjava2 ( Ifa7f6 ).

Исправления ошибок

  • Исправлена ​​проблема, из-за которой пейджинг иногда отправлял неактивные события различия в RecyclerView, что могло привести к преждевременному срабатыванию некоторых прослушивателей. ( Ic507f , б/182510751 )

Внешний вклад

  • В артефакт rxjava3 добавлены устаревшие API совместимости PagedList ( Id1ce2 , b/182497591 ).

Создание подкачки, версия 1.0.0

Версия 1.0.0-альфа20

24 мая 2023 г.

Выпущен androidx.paging:paging-compose:1.0.0-alpha20 . Версия 1.0.0-alpha20 содержит эти коммиты.

Новые возможности

  • Paging Compose теперь поддерживает предварительный просмотр списка поддельных данных путем создания PagingData.from(fakeData) и упаковки этих PagingData в MutableStateFlow (например, MutableStateFlow(PagingData.from(listOf(1, 2, 3))) ). Используя эти данные в качестве входных данных в @Preview , вызовы collectAsLazyPagingItems() обеспечат возможность предварительного просмотра LazyPagingItems . ( I8a78d , р/194544557 )

Исправления ошибок

  • Кэшированные данные из pager.flow.cachedIn , собранные в LazyPagingItems , теперь будут доступны сразу после восстановления состояния без необходимости асинхронного сбора. Это означает, что кэшированные данные будут готовы к представлению сразу после первоначальной композиции после восстановления состояния. ( I97a60 , б/177245496 )

Версия 1.0.0-альфа19

3 мая 2023 г.

Выпущен androidx.paging:paging-compose:1.0.0-alpha19 . Версия 1.0.0-alpha19 содержит эти коммиты.

Поддержка всех ленивых макетов

Ранее Paging Compose предоставлял пользовательские items и расширения itemsIndexed для LazyListScope , что означало, что вы не могли использовать Paging Compose с другими отложенными макетами, такими как LazyVerticalGrid , HorizontalPager или другими пользовательскими отложенными компонентами, предоставляемыми библиотеками Wear и TV. Устранение этой негибкости является основным обновлением этого выпуска.

Чтобы поддерживать более ленивые макеты, нам нужно было создать API на другом уровне — вместо того, чтобы предоставлять собственный API items для каждого ленивого макета, Paging Compose теперь предоставляет методы расширения немного более низкого уровня для LazyPagingItems в itemKey и itemContentType . Эти API направлены на то, чтобы помочь вам реализовать параметры key и contentType в API стандартных items , которые уже существуют для LazyColumn , LazyVerticalGrid а также их эквивалентов в API, таких как HorizontalPager . ( Ifa13b , Ib04f0 , b/259385813 )

Это означает, что поддержка LazyVerticalGrid будет выглядеть так:

// This part is unchanged
val lazyPagingItems = pager.collectAsLazyPagingItems()

LazyVerticalGrid(columns = GridCells.Fixed(2)) {
  // Here we use the standard items API
  items(
    count = lazyPagingItems.itemCount,
    // Here we use the new itemKey extension on LazyPagingItems to
    // handle placeholders automatically, ensuring you only need to provide
    // keys for real items
    key = lazyPagingItems.itemKey { it.uniqueId },
    // Similarly, itemContentType lets you set a custom content type for each item
    contentType = lazyPagingItems.itemContentType { "contentType" }
  ) { index ->
    // As the standard items call provides only the index, we get the item
    // directly from our lazyPagingItems
    val item = lazyPagingItems[index]
    PagingItem(item = item)
  }
}

Дополнительные примеры использования этих новых API см. в наших примерах .

Хотя эти изменения действительно делают примеры LazyColumn и LazyRow на несколько строк длиннее, мы считаем, что согласованность во всех ленивых макетах является важным фактором для тех, кто будет использовать Paging Compose в будущем. По этой причине существующие расширения LazyListScope устарели. ( I0c459 , I92c8f , б/276989796 )

Изменения API

  • Чтобы упростить переход на новые API, функции расширения items и itemsIndexed в LazyListScope теперь поддерживают параметр contentType , что отражает поддержку в новых API. ( Ib1918 , р/255283378 )

Обновления зависимостей

  • Paging Compose обновил свою зависимость с Compose 1.0.5 до Compose 1.2.1. ( Ib1918 , р/255283378 )

Версия 1.0.0-альфа18

8 февраля 2023 г.

androidx.paging:paging-compose:1.0.0-alpha18 выпущен без изменений. Версия 1.0.0-alpha18 содержит эти коммиты.

Версия 1.0.0-альфа17

24 октября 2022 г.

Выпущен androidx.paging:paging-compose:1.0.0-alpha17 . Версия 1.0.0-alpha17 содержит эти коммиты.

Новые возможности

  • Добавьте поддержку пользовательского CoroutineContext при вызове collectLazyPagingItems . ( I7a574 , б / 243182795 , б / 233783862 )

Версия 1.0.0-альфа16

10 августа 2022 г.

Выпущен androidx.paging:paging-compose:1.0.0-alpha16 . Версия 1.0.0-alpha16 содержит эти коммиты.

Новые возможности

  • Пейджинг теперь предоставляет журналы через класс LazyPagingItems чтобы предоставлять отладочную информацию, собранную из PagingData.
  • Журналы можно включить с помощью команды adb shell adb shell setprop log.tag.Paging [DEBUG|VERBOSE] . ([b/235527159}(https://issuetracker.google.com/issues/235527159))

Исправления ошибок

  • Исправлена ​​недостающая ошибка конструктора PagingDataDiffer при использовании paging-compose:1.0.0-alpha15 с paging-common:3.1.1 или старше. ( b/235256201 , b/239868768 ).

Версия 1.0.0-альфа15

1 июня 2022 г.

Выпущен androidx.paging:paging-compose:1.0.0-alpha15 . Версия 1.0.0-alpha15 содержит эти коммиты.

Изменения API

  • Добавлены конструкторы для PagingDataAdapter и AsyncPagingDataDiffer , которые принимают CoroutineContext вместо CoroutineDispatcher . ( Idc878 )

Исправления ошибок

  • LazyPagingItems теперь устанавливает для начального loadState обновление LoadState.Loading . ( I55043 , б / 224855902 )

Версия 1.0.0-альфа14

13 октября 2021 г.

androidx.paging:paging-compose:1.0.0-alpha14 выпускается. Версия 1.0.0-Alpha14 содержит эти коммиты.

Версия 1.0.0-Alpha13

29 сентября 2021 г.

androidx.paging:paging-compose:1.0.0-alpha13 выпускается. Версия 1.0.0-Alpha13 содержит эти коммиты.

Изменения API

  • Функция LazyPagingItems.snapshot() была заменена на свойство LazyPagingItems.itemSnapshotList ( IE2DA8 )
  • Установлен LazyPagingItems.getAsState() был удален ( IE65E4 )

Версия 1.0.0-Alpha12

21 июля 2021 г.

androidx.paging:paging-compose:1.0.0-alpha12 выпускается. Версия 1.0.0-Alpha12 содержит эти коммиты.

Изменения API

  • items(lazyPagingItems) и itemsIndexed(lazyPagingItems) используемые для подключения подключения к LazyColumn/Row теперь принимают параметр опции, который позволяет вам указать стабильный ключ, представляющий элемент. Вы можете прочитать больше о ключах здесь. ( I7986d )
  • Функция lazyPagingItems.getAsState(index) теперь устарела. Вместо этого используйте lazyPagingItems[index] . ( I086CB , B/187339372 )

Версия 1.0.0-Альфа11

30 июня 2021 г.

androidx.paging:paging-compose:1.0.0-alpha11 выпускается. Версия 1.0.0-Alpha11 содержит эти коммиты.

Версия 1.0.0-Alpha10

2 июня 2021 г.

androidx.paging:paging-compose:1.0.0-alpha10 выпускается. Версия 1.0.0-Alpha10 содержит эти коммиты.

Версия 1.0.0-Alpha09

18 мая 2021 г.

androidx.paging:paging-compose:1.0.0-alpha09 выпускается. Версия 1.0.0-Alpha09 содержит эти коммиты.

Исправления ошибок

  • LazypagingItems 'Itemcount и Getter atemter теперь наблюдаются, что позволяет использовать его и с LazyverticalGrid ( IE2446 , B/171872064 , B/168285687 )

Составьте совместимость

  • androidx.paging:paging-compose:1.0.0-alpha09 совместим только с Compose Version 1.0.0-beta07 и выше.

Версия 1.0.0-Alpha08

24 февраля 2021 г.

androidx.paging:paging-compose:1.0.0-alpha08 выпускается. Версия 1.0.0-Alpha08 содержит эти коммиты.

Обновлено для интеграции с Compose 1.0.0-BETA01.

Версия 1.0.0-Alpha07

10 февраля 2021 г.

androidx.paging:paging-compose:1.0.0-alpha07 выпускается. Версия 1.0.0-Alpha07 содержит эти коммиты.

Обновлено для интеграции с Compose Alpha12.

Версия 1.0.0-Alpha06

28 января 2021 года

androidx.paging:paging-compose:1.0.0-alpha06 выпускается. Версия 1.0.0-Alpha06 содержит эти коммиты.

Исправления ошибок

Обновлено, чтобы зависеть от сочинения 1.0.0-альфа11.

Версия 1.0.0-альфа05

13 января 2021 г.

androidx.paging:paging-compose:1.0.0-alpha05 выпускается. Версия 1.0.0-alpha05 содержит эти коммиты.

Обновлено, чтобы зависеть от сочинения 1.0.0-альфа10.

Версия 1.0.0-альфа04

16 декабря 2020 г.

androidx.paging:paging-compose:1.0.0-alpha04 выпускается. Версия 1.0.0-alpha04 содержит эти коммиты.

Исправления ошибок

  • Обновлено удобные свойства, CombinedLoadStates.refresh , CombinedLoadStates.prepend , CombinedLoadStates.append для перехода только от Loading к NotLoading после того, как как медиатор, так и состояния исходной нагрузки NotLoading чтобы гарантировать, что удаленное обновление было применено. ( I65619 )

Версия 1.0.0-альфа03

2 декабря 2020 г.

androidx.paging:paging-compose:1.0.0-alpha03 выпускается. Версия 1.0.0-alpha03 содержит эти коммиты.

  • Обновлено в соответствии с Compose 1.0.0-Alpha08.

Версия 1.0.0-альфа02

11 ноября 2020 г.

androidx.paging:paging-compose:1.0.0-alpha02 выпускается. Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения API

  • Добавлено .peek() , .snapshot() , .retry() и .refresh() методы LazyPagingItem s, которые выявляют ту же функциональность, доступную в AsyncPagingDataDiffer / PagingDataAdapter ( IDDFE8 , B / 172041660 )

Версия 1.0.0-альфа01

28 октября 2020 г.

androidx.paging:paging-compose:1.0.0-alpha01 выпускается. Версия 1.0.0-alpha01 содержит эти коммиты.

Новые возможности

Артефакт paging-compose обеспечивает интеграцию между библиотекой Paging и JetPack Compose . Простой пример использования:

  @Composable
  @OptIn(ExperimentalLazyDsl::class)
  fun ItemsDemo(flow: Flow<PagingData<String>>) {
      val lazyPagingItems = flow.collectAsLazyPagingItems()
      LazyColumn {
          items(lazyPagingItems) {
              Text("Item is $it")
          }
      }
  }

Версия 3.0.1

Версия 3.0.1

21 июля 2021 г.

androidx.paging:paging-*:3.0.1 выпускается. Версия 3.0.1 содержит эти коммиты.

Исправления ошибок

  • Доступ к PagedList.dataSource из первоначального значения, произведенного LivePagedList или RxPagedList больше не будет неправильно бросить незаконное статей ( I96707 )

Версия 3.0.0

Версия 3.0.0

5 мая 2021 г.

androidx.paging:paging-*:3.0.0 выпускается. Версия 3.0.0 содержит эти коммиты.

Основные особенности 3.0.0

Большинство существующих API от Paging 2.xx установилось в пользу новых API -интерфейсов Paging 3, чтобы принести следующие улучшения:

  • Первоклассная поддержка косяков и потока котлин
  • Поддержка отмены
  • Встроенное состояние нагрузки и сигналы ошибок
  • Повторная функциональность повторения + обновления
  • Все три подкласса данных были объединены в класс Unified Pagingsource
  • Пользовательские преобразования страниц, включая встроенный для добавления сепараторов
  • Загрузка заголовков и нижних колонтитулов

Версия 3.0.0-RC01

21 апреля 2021 г.

androidx.paging:paging-*:3.0.0-rc01 выпускается. Версия 3.0.0-RC01 содержит эти коммиты.

Исправления ошибок

  • Исправлена ​​проблема, в которой пейджинг иногда отправляет неоперацию различных событий в переработку, что может привести к тому, что определенные слушатели запускают рано. ( IC507F , B/182510751 )

Версия 3.0.0-бета03

24 марта 2021 г.

androidx.paging:paging-*:3.0.0-beta03 выпускается. Версия 3.0.0-BETA03 содержит эти коммиты.

Исправления ошибок

  • Мы обновили, как заполнители обрабатываются, когда список перезагружается, чтобы предотвратить неожиданные скачки в переработке. См. Nullpaddeddiffing.md для деталей. ( IF1490 , B/170027529 , B/177338149 )
  • Различные строители PageDlist (старый путь совместимости) больше не неправильно синхронно вызовы DataSource.Factory.create() в основном потоке, когда называется .build() . ( б/182798948 )

Версия 3.0.0-бета02

10 марта 2021 г.

androidx.paging:paging-*:3.0.0-beta02 выпускается. Версия 3.0.0-BETA02 содержит эти коммиты.

Изменения API

  • Расширения RX3 теперь правильно распространяют @ExperimentalCoroutinesApi . Ранее они были отмечены методом @get , который игнорируется компилятором Kotlin из-за: https://youtrack.jetbrains.com/issue/kt-45227 ( i5733c )

Исправления ошибок

  • Применение ограничений на публичное использование экспериментальных API ( i6aa29 , b/174531520 )
  • Исправлена ​​ошибка, заставляя PagingState всегда быть null когда вызывается удаленное обновление.
  • Исправлена ​​ошибка, в которой пустые страницы, возвращаемые Pagingsource, могли предотвратить получение пейджинга снова, чтобы выполнить prefetchDistance вызывая подкидка для «застрявшего».

Версия 3.0.0-бета01

10 февраля 2021 г.

androidx.paging:paging-*:3.0.0-beta01 выпускается. Версия 3.0.0-BETA01 содержит эти коммиты.

Изменения API

  • Обертки RX2 и RX3 теперь подвергают экспериментальную аннотацию, от которой это зависит. Если вы используете обертки RX Compat в Paging-Rxjava2 или Paging-Rxjava3, теперь вам нужно будет аннотировать использование с помощью @OptIn(ExperimentalCoroutinesApi::class) ( ib1f9d )

Исправления ошибок

  • Фиксированное IndexOutOfBoundsException: Inconsistency detected иногда выбрасываемая при использовании API DataSource через пути совместимости
  • Вызов isInvalid во время инициализации DataSource при использовании через пути совместимости теперь правильно запускается на FetchDispatcher, а не в основном потоке. Это исправляет IllegalStateException из -за доступа DB в основной потоке при использовании внедрения PagingSource .

Версия 3.0.0-Alpha13

27 января 2021 г.

androidx.paging:paging-*:3.0.0-alpha13 выпускается. Версия 3.0.0-Alpha13 содержит эти коммиты.

Изменения API

  • PagingSource.getRefreshKey больше не является необязательным для реализации, теперь она является абстрактной функцией без реализации по умолчанию. Мигрирующие пользователи могут либо продолжать возвращать реализацию по умолчанию, которая просто возвращает null , но getRefreshKey() должна иметь реальную реализацию, возвращая ключ на основе текущей позиции прокрутки пользователя, которая позволяет Paging продолжать загружать в центре просмотра через PagingState.anchorPosition если это возможно. ( I4339a )
  • InvalidatingPagingSourceFactory в настоящее время является окончательным классом ( IA3B0A )
  • Разрешить поведение конфигурации сепаратора терминала (заголовок / нижний колонтитул) с помощью дополнительного необязательного параметра сепаратипе. Два варианта:
    • FULLY_COMPLETE - существующее поведение; Подождите, пока как Pagingsource, так и отдаленного среднего, чтобы отметить эндофагинированную обработку перед добавлением терминальных сепараторов. Если дистанционная среда не используется, удаленное нагрузочное состояние игнорируется. Это в первую очередь полезно, если вы хотите отображать разделения раздела, когда раздел полностью загружен, включая извлечение из удаленного источника, например, сети.
    • SOURCE_COMPLETE - ждать только Pagingsource отметить эндофагинированную обработку, даже если используется дистанционная среда. Это позволяет синхронно представлять заголовки и нижние колонтитулы с начальной нагрузкой, которая не позволяет пользователям необходимо прокрутить прокрутку, чтобы увидеть терминальные сепараторы. ( IBE993 , B/174700218 )

Исправления ошибок

  • Исправлена ​​редкая утечка памяти, которая происходит, когда PagingSource признан недействительным, прежде чем PageFetcher даже может начать загружать с него. ( I9606B , B/174625633 )

Версия 3.0.0-Alpha12

13 января 2021 г.

androidx.paging:paging-*:3.0.0-alpha12 выпускается. Версия 3.0.0-Alpha12 содержит эти коммиты.

Изменения API

  • InvalidatingPagingSourceFactory больше не является абстрактным классом, так как у него никогда не было никаких абстрактных методов. ( I4a8c4 )
  • Добавлена ​​перегрузка .cachedin (), которая принимает ViewModel вместо жизненного цикла или Coroutinescope для пользователей Java. ( I97D81 , B/175332619 )
  • Позвольте абонентам Java -абонентам использовать операции преобразования PagingData асинхронным образом, приняв аргументов исполнителя в аргументы оператора преобразования. У всех операторов -синс -преобразования теперь есть суффикс -сиксус, а пользователи Kotlin Coroutine должны будут устроиться на устранение устранения диски, вызывая функцию расширения, которая вместо этого принимает приостановленный блок. Все операторы трансформации PagingData были перенесены на расширения в рамках статического класса PagingDatatransforms. Пользователи Java должны будут позвонить им через статические помощники, например, PagingDataTransforms.map(pagingData, transform) для пользователей Kotlin, синтаксис такой же, но вам нужно импортировать функцию. ( IF6885 , B/172895919 )

Исправления ошибок

  • Исправлена ​​ошибка, в которой RemoteMediator.load() не будет вызван во время adapter.refresh() если бы конец страниц уже был достигнут.

Версия 3.0.0-Alpha11

16 декабря 2020 г.

androidx.paging:paging-*:3.0.0-alpha11 . Версия 3.0.0-Alpha11 содержит эти коммиты.

Новые возможности

  • Сохраненная поддержка состояния добавлена ​​для следующих базовых вариантов использования (полная поддержка, особенно в сложном исходном случае, все еще находится в стадии разработки):
    • Поток кэшируется, а применение не убит (например, поток кэшируется в модели просмотра, а деятельность воссоздана в процессе)
    • Считается источник пейджинга, заполнители включены, а макет не ошеломлен.

Изменения API

  • PagingSource.getRefreshKey() теперь стабильный API ( i22f6f , b/173530980 )
  • PagingSource.invalidate больше не является открытой функцией. Если вам нужно получить уведомление, когда происходит аннулирование, рассмотрите возможность вызова метода RegisterInvalidatedCallback вместо того, чтобы переоценить недействительную. ( I628D9 , B/173029013 , B/137971356 )
  • Pager теперь имеет единый экспериментальный конструктор наряду со своим обычным конструктором, а не протекает экспериментальные API в неэкспериментальный общественный API через аннотацию. ( I9dc61 , b/174531520 )
  • Обновлено удобные свойства, CombinedLoadStates.refresh , CombinedLoadStates.prepend , CombinedLoadStates.append для перехода только от Loading к NotLoading после того, как как медиатор, так и состояния исходной нагрузки NotLoading чтобы гарантировать, что удаленное обновление было применено. ( I65619 )
  • LoadParAms.PadeSize был удален (он уже устарел). Рекомендация состоит в том, чтобы использовать LoadParams.loadSize в вашем PagingSource.

    LoadParams.loadSize всегда равен PagingConfig.pageSize за исключением начального нагрузочного вызова, где он равен PagingConfig.initialLoadSize .

    Если вы тестируете свой дат данных Paging2 без использования пейджера или PageDlist, pageSize может не соответствовать PagingConfig.pageSize , если вы также устанавливаете initialLoadSize . Если это важно для ваших тестов, попробуйте вместо этого использовать пейджер/Pagedlist, который внутренне установит правильный размер страниц для ваших методов загрузки данных. ( I98AC7 , B/149157296 )

Исправления ошибок

  • Исправлена ​​авария из -за нелегальной статовой эктриэкцепции при использовании сепараторов с набором PagingConfig.MaxSize. ( I0ed33 , b/174787528 )
  • Исправлена ​​ошибка, в которой состояние загрузки для Prepend / Append не обновляется до NotLoading(endOfPaginationReached = true) сразу после начальной нагрузки, если был установлен удаленная лиц ( i8cf5a )
  • Исправлена ​​ошибка, в которой API на стороне докладчика, такие как .snapshot (), .peek () и т. Д., Получили бы предыдущий (устаревший) список в обновлениях ListUpdateCallback.
  • Исправлена ​​ошибка, в которой операторы разделителей не будут добавлять заголовки или нижние колонтитулы при использовании с удаленным средством.
  • Исправлена ​​ошибка, в которой обновления Loadstate для NotLoading для удаленного среднего, застрявшего в состоянии загрузки
  • Исправлена ​​ошибка, в которой API совместимости Paging2.0,. .asPagingSourceFactory() может привести к инициализации DataSource на основе неверного CoroutInedIspatcher. Это разрешает аварию и возможные случаи ANR, особенно при использовании текущей реализации Promation Pagingsource, которая использует этот путь совместимости.

Версия 3.0.0-Alpha10

2 декабря 2020 г.

androidx.paging:paging-*:3.0.0-alpha10 выпускается. Версия 3.0.0-Alpha10 содержит эти коммиты.

Изменения API

  • Установленные API dataRefreshFlow и dataRefreshListener были удалены, так как они избыточно с обновлениями LoadStateFlow / Helloger. Для тех, кто мигрирует, эквивалент Loadstateflow - это:

    loadStateFlow.distinctUntilChangedBy { it.refresh }
        .filter { it.refresh is NotLoading }
    

    ( IB5570 , B/173530908 )

Исправления ошибок

  • EndofPaginationReached для REFRESH удаленного регистрации теперь правильно распространяется для Loadstate обновлений и предотвращает удаленное APPEND и PREPEND от запуска. ( I94a3f , b/155290248 )
  • Представление пустого списка либо из -за пустой начальной страницы, либо тяжелой фильтрации больше не помешает Paging от PREPEND отключить или APPEND нагрузки. ( I3e702 , b/168169730 )
  • Исправлена ​​проблема, в которой getRefreshKey не обращается к последующим поколениям PagingSource, когда признаются признания недействительных. ( I45460 , B/170027530 )

Внешний вклад

  • Новый абстрактный класс InvalidatingPagingSourceFactory был добавлен с помощью API .invalidate() , который пересылает недействительную ко всем излучаемым он издает. Спасибо @claraf3 ! ( IE71FC , B/160716447 )

Известные проблемы

  • Заголовки и нижние колонтитулы из преобразования .InsertSeparators () могут не появиться сразу же при использовании удаленного регистрации B/172254056
  • Использование удаленного среднего может привести к тому, что удаленная LoadState застряла, если аннимирование и PagingSource.load(LoadParams.Refresh(...)) завершается до RemoteMediator.load() возвращает b/173717820

Версия 3.0.0-Alpha09

11 ноября 2020 г.

androidx.paging:paging-*:3.0.0-alpha09 выпускается. Версия 3.0.0-Alpha09 содержит эти коммиты.

Изменения API

  • Полностью установите методы DataReshflow / слушателя с помощью пункта замены. ( I6e2dd )

Исправления ошибок

  • Исправлено для того, чтобы IllegalArgumentException бросает при использовании сепараторов с помощью дистанционногоедиатора, а недействительная запускается, в то время как удаленная нагрузка, которая будет возвращать Endofpagination, все еще работает ( i3a260 )

Версия 3.0.0-Alpha08

28 октября 2020 г.

androidx.paging:paging-*:3.0.0-alpha08 выпускается. Версия 3.0.0-Alpha08 содержит эти коммиты.

Изменения API

  • Варианты Kotlin / Java of DataSource.InvalidatedCallback были объединены путем включения SAM-конверсии в Kotlin через функциональный интерфейс (доступный в Kotlin 1.4). Это также исправляет ошибку, в которой вариант Kotlin of Invalidate обратных вызовов не был вызван после преобразования .map или .mapByPage . ( I1F244 , B/165313046 )

Исправления ошибок

  • Взаимодействие Пейджинг с ViewPager значительно улучшилось. В частности, пейджинг больше не будет отменять RemoteMediator#load из -за недействительной страницы. Он также больше не будет делать запрос на загрузку приложения/приготовление загрузки, если требуется обновление , пока запрос обновления успешно не завершится. ( I6390B , B/162252536 )
  • Проверка API Lint для пропущенного detgetmatchingbuilder включена для Androidx ( i4bbea , b/138602561 )
  • Исправлена ​​ошибка, где. .withLoadState* Помощники ConcatAdapter сбой из -за уведомления переработки из фонового потока ( I18BB5 , B/170988309 )
  • Исправлена ​​ошибка, при которой загрузка очень маленькой непустых страниц иногда предотвращает правильную предварительную фиксацию нагрузки. Iffda3 b/169259468

Версия 3.0.0-Alpha07

1 октября 2020 г.

androidx.paging:paging-*:3.0.0-alpha07 выпускается. Версия 3.0.0-Alpha07 содержит эти коммиты.

Изменения API

  • Async PagingData Operators на основе гуавы теперь принимают исполнителя в качестве параметра, чтобы управлять контекстом выполнения. ( ID4372 )

Исправления ошибок

  • Исключение фиксированного индексаута, добавленное в удаленное медиатор из -за условия гонки. ( I00b7f , b/165821814 )
  • Исправлена ​​условие гонки в конверсии данных о данных -> преобразование Pagingsource, которое может привести к тому, что результирующий Pagingsource игнорирует сигналы недействительной из DataSource.
  • Исправлена ​​проблема в логике страниц, которая иногда приводит к тому, что она не сможет поднять новые поколения Pagingsource до тех пор, пока не будет вызван PagingDataAdapter.refresh ()
  • Исправлена ​​проблема, которая иногда может привести к потере прокрутки при использовании данных, преобразованного в PagingSource (например, в комнате), в сочетании с дистанционным средством.

Внешний вклад

  • Спасибо @Simonschiller за добавление RXJAVA2, RXJAVA3 и асинхронных операторов Async на основе гуавы для PagingData!

Версия 3.0.0-Alpha06

2 сентября 2020 г.

androidx.paging:paging-*:3.0.0-alpha06 выпускается. Версия 3.0.0-Alpha06 содержит эти коммиты.

Изменения API

  • UnsupportedOperationException с более четкими сообщениями об отсутствии поддержки стабильных идентификаторов теперь бросается всякий раз, когда называется PagingDataAdapter.setHasStableIds . ( IB3890 , B/158801427 )

Исправления ошибок

  • Вставки параметры больше не фильтруют пустые страницы, позволяющие уважать расстояние в предварительном расстоянии даже в тех случаях, когда вставлено много пустых страниц. ( I9cff6 , b/162538908 )

Версия 3.0.0-Alpha05

19 августа 2020 г.

androidx.paging:paging-*:3.0.0-alpha05 выпускается. Версия 3.0.0-Alpha05 содержит эти коммиты.

Исправления ошибок

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

Внешний вклад

  • Спасибо Clara F за помощь в очистке некоторых тестов! ( 549612 )

Версия 3.0.0-Alpha04

5 августа 2020 г.

androidx.paging:paging-*:3.0.0-alpha04 выпускается. Версия 3.0.0-Alpha04 содержит эти коммиты.

Изменения API

  • Добавлен API peek() API в AsyncPagingDataDiffer и PagingDataAdapter чтобы разрешить представленный доступ к данным без нагрузок страниц. ( I38898 , B/159104197 )
  • Добавлен API snapshot() в PagingDataAdapter и AsyncPagingDataDiffer чтобы разрешить извлекать представленные элементы без запуска построения страниц. ( I566b6 , b/159104197 )
  • Добавлен конструктор PagingData.from(List<T>) , чтобы разрешить представлять статические списки, которые можно объединить с общим потоком PagingData, чтобы показать статические списки в определенных состояниях, например, перед начальным обновлением или просто для тестирования преобразований. ( ID134D )
  • Установите API DataResh Flow / Helliser API, так как они предназначались для выставки представленного состояния элементов на обновлении, но с улучшениями к срокам обратного вызова потока / слушателя и свойства Itemcount, оно избыточно ( IA19F3 )
  • Добавлены обертки совместимости Rxjava3 для PagingSource и RemoteMediator ( I49EF3 , B/161480176 )

Исправления ошибок

  • PositionalDataSource превратился в PagingSource через toPagingSourceFactory Helper, в том числе PagingSource созданный комнатой, теперь правильно отмечает себя, чтобы поддержать прыжки. ( I3e84c , b/162161201 )
  • Исправлена ​​ошибка, в которой использование синхронного варианта отправки, иногда приводит к гонке, вызывая ClosedSendChannelException ( i4d702 , b/160192222 )

Внешний вклад

  • Спасибо Zac Sweers за добавление обертков совместимости Rxjava3 от имени Slack! ( I49ef3 , b/161480176 )

Версия 3.0.0-Alpha03

22 июля 2020 г.

androidx.paging:paging-*:3.0.0-alpha03 выпускается. Версия 3.0.0-Alpha03 содержит эти коммиты.

Изменения API

  • Конструктор для Pagingstate в настоящее время является общедоступным, что должно упростить реализации тестирования getRefreshkey () ( i8bf15 )
  • HID DataSource Kotlin Map варианты от Java, чтобы разрешить неоднозначность между оригинальными и котлинскими вариантами. ( If7b23 , b/161150011 )
  • Избыточные API, предназначенные в качестве удобств для пользователей Kotlin, были отмечены @jvmsynthetic ( i56ae5 )
  • Добавлены перегрузки для Constructor. Page, который по умолчанию по умолчанию .
  • Сделанные существующие операторы PagingData принимают приостановленные методы и представили новые операторы MapSync, Flatmapsync и Filtersync, не связанные с подвигами для пользователей Java. Существующие методы преобразования были перемещены на функции расширения, поэтому пользователям Kotlin теперь необходимо импортировать их. ( I34239 , B/159983232 )

Исправления ошибок

  • PagingSources в комнате (и Positionaldatasource) будет отображать ведущий сепаратор как часть первой страницы, поэтому пользователю не нужно прокручивать его, чтобы раскрыть его. ( I6f747 , b/160257628 )
  • Доступ к предметам на заполнителе теперь правильно запускает загрузки Pagingsource до тех пор, пока страница не будет возвращена, которая выполняет запрошенный индекс после преобразования с помощью PagingData.Filter () ( I95625 , B/158763195 )
  • Исправление для ошибки, где иногда прокрутка после возврата PagingSource Ошибка может помешать повторной попытке PagingDataAdapter.retry (). ( I1084f , b/160194384 )
  • Исправляет проблему, когда доступ к элементу после сброса страницы может не загружать страницы, хотя доступ к элементу находился в рамках предварительной добычи ( IE95AE , B/160038730 )
  • Установка pagingconfig.maxsize больше не позволяет заполнителям после события Drop ( i2be29 , b/159667766 )

Версия 3.0.0-Alpha02

24 июня 2020 г.

androidx.paging:paging-*:3.0.0-alpha02 выпускается. Версия 3.0.0-Alpha02 содержит эти коммиты.

Изменения API

  • Добавлены перегрузки для конструктора PagingConfig с общими значениями по умолчанию ( I39C50 , B/158576040 )
  • Добавлены перегрузки для конструкторов PagingDataAdapter и AsyncPagingDataDiffer с общими значениями по умолчанию ( IE91F5 )
  • API -интерфейсы адаптера, dataRefreshFlow и dataRefreshListener теперь передают логическое, чтобы сигнализировать о том, пуста ли PagingData ( i6e37e , b/159054196 )
  • Добавлены Rxjava и Guava APIS для отдаленного среднего класса - RxRemoTemediator и HellockableFuturerEmoTemediator
  • Добавлены помощники в Pagingstate для общего доступа к предметам, таким как isEmpty() и firstItemOrNull() ( i3b5b6 , b/158892717 )

Исправления ошибок

  • Пейджер теперь проверяет повторное использование PagingSource на заводе, чтобы предотвратить случайное повторное использование недействительных пигрингс -саунов, что дало неясную ошибку ( I99809 , B/158486430 )
  • Сбои от обновления с дистанционным средством больше не предотвращают загрузку PagingSource ( I38B1B , B/158892717 )
  • Версия отправки submitData не связанная с SUSPODEND, больше не вызывает сбою из-за одновременной коллекции в нескольких PagingData при вызове после приостановленной версии submitData . ( I26358 , B/158048877 )
  • Исправлено фиксированное исключение "не может сбраться дважды из пейджера", которое может произойти после изменения конфигурации ( i58bcc , b/158784811 )

Версия 3.0.0-Alpha01

10 июня 2020 г.

androidx.paging:paging-*:3.0.0-alpha01 выпускается. Версия 3.0.0-Alpha01 содержит эти коммиты.

Библиотека Paging обновила 3,0, чтобы включить несколько крупных новых функций.

Новые функции 3.0

Известные проблемы

  • Paging 3 Javadocs еще не доступны. Тем временем, пожалуйста, используйте руководства, связанные выше, или документы Kotlin. ( B/158614050 )

Версия 2.1.2

Версия 2.1.2

18 марта 2020 г.

androidx.paging:paging:2.1.2 выпускается. Версия 2.1.2 содержит эти коммиты против 2.1.0 .

Исправления ошибок

  • Исправлено для IndexOutOfBoundsException в редких случаях при преобразовании позиции во время недействительной.

Выпуск выпуска

  • Пейджинг версия 2.1.1 была неверно выпущена из неправильной филиала, обнажая частично внедренные API и функциональность в будущем.

  • Paging 2.1.2 содержит исправление нагрузки, первоначально выпущенное в 2.1.1, но на этот раз правильно выбрасывается на вершине 2.1.0. Настоятельно рекомендуется перейти на этот релиз, если вы в настоящее время находитесь на 2.1.1.

Версия 2.1.1

Версия 2.1.1

18 декабря 2019 г.

androidx.paging:paging-*:2.1.1 выпускается. Версия 2.1.1 содержит эти коммиты .

Исправления ошибок

  • Сметные начальные нагрузки от PoseleAldatasources теперь сосредоточены на последнем доступе, когда заполнители отключены

Версия 2.1.0

Версия 2.1.0

25 января 2019 г.

Paging 2.1.0 выпускается без изменений от 2.1.0-rc01 .

Версия 2.1.0-RC01

6 декабря 2018 года

Paging 2.1.0-rc01 высвобождается без изменений от 2.1.0-beta01 .

Версия 2.1.0-beta01

1 ноября 2018 года

Paging 2.1.0-beta01 высвобождается без изменений от 2.1.0-alpha01 .

Версия 2.1.0-Alpha01

12 октября 2018 года

Paging 2.1.0-alpha01 имеет два основных дополнения - падение страницы и библиотеки расширения KTX для каждого артефакта, а также несколько других изменений API и ошибок.

Изменения API

  • Добавлен PagedList.Config.Builder.setMaxSize() для ограничения количества загруженных элементов в памяти.
  • Добавлен androidx.paging.Config() в качестве альтернативы Kotlin для PagedList.Config.Builder
  • Добавлен androidx.paging.PagedList() в качестве альтернативы Kotlin для PagedList.Builder
  • Добавлен DataSourceFactory.toLiveData() в качестве альтернативы Kotlin для LivePagedListBuilder
  • Добавлен DataSourceFactory.toObservable() и toFlowable() в качестве альтернативы Kotlin для RxPagedListBuilder
  • Добавлен AsyncPagedListDiffer.addPagedListListener() для прослушивания, когда заменяется PagedList. B/111698609
  • Добавлен вариант PagedListAdapter.onCurrentListChanged() , который проходит старый и новый список, устаревший предыдущий вариант.
  • Добавлены варианты PagedListAdapter/AsyncPagedListDiffer.submitList() , которые проводят дополнительный обратный вызов, который триггеры, если/когда отображается PagedList, после разнообразия. Это позволяет синхронизировать обмен PageDlist с другими обновлениями пользовательского интерфейса. B/73781068
  • PagedList.getLoadedCount() добавлено, чтобы сообщить вам, сколько элементов в памяти. Обратите внимание, что возвратное значение всегда равно .size()

Исправления ошибок

  • Исправлена ​​условие гонки при различии, если списки повторно используются B/111591017
  • PagedList.loadAround() теперь бросает IndexOutOfBoundsException , когда индекс недействителен. Ранее это могло разбиться с неясным другим исключением.
  • Исправлено случай, когда чрезвычайно небольшой начальный размер нагрузки вместе с неизменными данными не приведет к дальнейшей загрузке B/113122599

Версия 2.0.0

Версия 2.0.0

1 октября 2018 г.

Paging 2.0.0 выпускается с помощью одного изготовления ошибок.

Исправления ошибок

  • Исправлена ​​авария, которая может произойти с очень быстрой прокруткой, используя PositionalDataSource и заполнители B/114635383 .

Версия 2.0.0-BETA01

2 июля 2018 года

Исправления ошибок

  • Фиксированный контент, исчезающий в некоторых случаях приготовления (заполнители отключено, Positionaldatasource) b/80149146
  • (Уже выпущенные в 1.0.1 ) Фиксированные сбои, в которых PagedListAdapter и AsyncPagedListDiffer не будут сигнализировать о событиях перемещения. B/110711937

Зависимости до антирода

Для последующих версий Preging Vaging включают эти зависимости:

dependencies {
    def paging_version = "1.0.0"

    implementation "android.arch.paging:runtime:$paging_version"

    // alternatively - without Android dependencies for testing
    testImplementation "android.arch.paging:common:$paging_version"

    // optional - RxJava support
    implementation "android.arch.paging:rxjava2:$paging_version"
}

Версия 1.0.1

Версия 1.0.1

26 июня 2018 года

Paging 1.0.1 выпускается с одним изгорожным аппаратом в runtime . Мы настоятельно рекомендуем использовать 1.0.1 для стабильности. Paging Rxjava2 1.0.1 также выпускается и идентична 1.0.0-rc1 .

Исправления ошибок

  • Фиксированные сбои, в которых PagedListAdapter и AsyncPagedListDiffer не смогут сигнализировать о событиях перемещения. B/110711937

Rxjava2 версия 1.0.0

RXJAVA2 Версия 1.0.0-RC1

16 мая 2018 года

Paging Rxjava2 1.0.0-rc1 движется, чтобы освободить кандидата без изменений от начальной альфа.

Версия 1.0.0

Версия 1.0.0-RC1

19 апреля 2018 г. Кандидат в пейджинг

У нас нет более известных проблем или новых функций, запланированных для выпуска Paging 1.0.0 . Пожалуйста, обновите свои проекты, чтобы использовать 1.0.0-rc1 и помогать нам сражаться с ним, чтобы мы могли отправить скалу Solid 1.0.0 .

В этом выпуске нет изменений, это то же самое, что 1.0.0-beta1 .

Версия 1.0.0-бета1

5 апреля 2018 года

Пейджинг будет в бета -версии в течение короткого времени, прежде чем выпустить кандидата. Мы не планируем дальнейшие изменения API для Paging 1.0 , а полоса для любых изменений API очень высока.

Поддержка Alpha Rxjava2 для пейджинга выпускается в виде отдельного необязательного модуля ( android.arch.paging:rxjava2:1.0.0-alpha1 ) и будет временно версировать отдельно до тех пор, пока не стабилизируется.

Эта новая библиотека предоставляет альтернативу Rxjava2 LivePagedListBuilder , способную построить Observable S и Flowable S, принимая Scheduler S вместо Executor S:

Котлин

val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
        .setFetchScheduler(myNetworkScheduler)
        .buildObservable()

Ява

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Новые возможности

  • RxPagedListBuilder добавляется через новый android.arch.paging:rxjava2 Artifact.

Изменения API

  • API изменяется, чтобы прояснить роль исполнителей в строителях:

    • Переименованное setBackgroundThreadExecutor() в setFetchExecutor()PagedList.Builder и LivePagedListBuilder )

    • Переименован setMainThreadExecutor() в setNotifyExecutor()PagedList.Builder ).

  • Fixed PagedList.mCallbacks участник был частным.

Исправления ошибок

  • LivePagedListBuilder запускает первоначальную нагрузку PagedList на указанного исполнителя, а не в пул резьбы для ввода арх.

  • Фиксированное поведение недействительной во внутренних обертках DataSource (используется для реализации DataSource.map , а также загрузку PositionalDataSource с заполнителем) b/77237534

Версия 1.0.0-Alpha7

21 марта 2018 года

Paging 1.0.0-alpha7 выпускается вместе с жизненными циклами 1.1.1 . Поскольку Paging Alpha7 зависит от перемещения класса Function , упомянутого выше, вам нужно будет обновить свой lifecycle:runtime до android.arch.lifecycle:runtime:1.1.1 .

Paging alpha7 планируется стать окончательным выпуском, прежде чем Paging попадет в бета -версию.

Изменения API

  • Объекты DataSource.LoadParams теперь имеют публичный конструктор, а объекты DataSource.LoadCallback . Это позволяет обернуть DataSource или напрямую тестирование DataSource с фиктивным обратным вызовом. B/72600421
  • Mappers для DataSource и DataSource.Factory
    • map(Function<IN,OUT>) позволяет преобразовать, обернуть или украшать результаты, загруженные DataSource .
    • mapByPage(<List<IN>,List<OUT>>) обеспечивает то же самое для обработки партии (например, если элементы, загруженные из SQL, должны дополнительно запросить отдельную базу данных, которая может быть сделана в виде партии.)
  • PagedList#getDataSource() добавляется в качестве удобного метода b/72611341
  • Все устаревшие классы были удалены из API, включая остатки пакета recyclerview.extensions и LivePagedListProvider .
  • DataSource.Factory изменяется с интерфейса на абстрактный класс, чтобы включить функциональность карты.

Исправления ошибок

  • Измененные строители были окончательными. B/70848565
  • Реализация DataSource комнаты теперь установлена ​​для обработки многоточных запросов-это исправление содержится в комнате 1.1.0-beta1, см. Выше.
  • Исправлена ​​ошибка, в которой BoundaryCallback.onItemAtEndLoaded не будет вызван для PositionalDataSource , если заполнители включены, а общий размер - это точное множество размеров страницы.

Версия 1.0.0-Alpha5

22 января 2018 г.

Исправления ошибок

  • Исправлена ​​загрузка страницы при отключении заполнителей B/70573345
  • Дополнительные журналы для отслеживания ошибки allogalargumentException b/70360195 (и умозрительное исправление на стороне комнаты)
  • Образец кода Javadoc B/70411933 , B/71467637