Пейджинг
В этой таблице перечислены все артефакты в группе androidx.paging
.
Артефакт | Стабильный релиз | Кандидат на релиз | Бета-релиз | Альфа-релиз |
---|---|---|---|---|
пейджинг-* | 3.3.6 | - | - | 3.4.0-альфа01 |
paging-compose | 3.3.6 | - | - | 3.4.0-альфа01 |
Объявление зависимостей
Чтобы добавить зависимость от Paging, необходимо добавить репозиторий Google Maven в свой проект. Прочтите репозиторий Google Maven для получения дополнительной информации.
Добавьте зависимости для необходимых артефактов в файл build.gradle
для вашего приложения или модуля:
Круто
dependencies { def paging_version = "3.3.6" 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.4.0-alpha01" }
Котлин
dependencies { val paging_version = "3.3.6" 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.4.0-alpha01") }
Информацию об использовании расширений Kotlin см. в документации ktx .
Дополнительную информацию о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Более подробную информацию смотрите в документации Issue Tracker .
Версия 3.4
Версия 3.4.0-альфа01
2 июля 2025 г.
Выпущен androidx.paging:paging-*:3.4.0-alpha01
. Версия 3.4.0-alpha01 содержит эти коммиты .
Новые возможности
- Paging добавил следующие цели KMP: watchos, tvos, mingwX64, watchosDeviceArm64 и linuxArm64. ( I237dd , Ia62b3 , b/368046982 , Icf15d , b/364652024 , I139d3 , b/338268719 )
Исправление ошибок
- Модульные тесты Android, использующие Paging 3.3 или более поздние версии, больше не будут выдавать ошибку из
PagingLogger
( Ia9400 , b/331684448 ) - Исправлена ошибка, из-за которой
RecyclerView
выдавал исключениеIndexOutOfBoundsException
, когда пользователь прокручивал страницу во время обновленияRecyclerView
( Id1f16 , b/381024738 ). - Исправлена ошибка, из-за которой при обновлении во время прокрутки не удавалось запустить больше загрузок. ( I60ca5 , b/352586078 )
- Исправлен сбой при прокрутке во время обновления элементов постраничного просмотра. ( I8c65a , b/347649763 )
Версия 3.3
Версия 3.3.6
12 февраля 2025 г.
Выпущен androidx.paging:paging-*:3.3.6
. Версия 3.3.6 содержит эти коммиты .
Исправление ошибок
- Сигналы обновления и повтора, отправленные во время первоначального обновления, теперь будут сохраняться и автоматически повторно отправляться, как только ведущий пейджинга будет готов.
Внешний вклад
Версия 3.3.5
11 декабря 2024 г.
Выпущен androidx.paging:paging-*:3.3.5
. Версия 3.3.5 содержит эти коммиты .
Исправление ошибок
- Исправлена ошибка, из-за которой
RecyclerView
выдавал исключениеIndexOutOfBoundsException
, когда пользователь прокручивал страницу во время обновленияRecyclerView
. ( Id1f16 , b/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
. ( Ia9400 , b/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 , b/352586078 ) - Исправлен сбой, возникающий при удалении элементов из резервного источника данных во время прокрутки
RecyclerView
с использованиемPagingDataAdapter
илиAsyncPagingDataDiffer
. ( I8c65a , b/347649763 )
Версия 3.3.0
14 мая 2024 г.
Выпущен androidx.paging:paging-*:3.3.0
. Версия 3.3.0 содержит эти коммиты .
Важные изменения по сравнению с 3.2.0
-
PagingDataPresenter
теперь является публичным классом. Мультиплатформенные презентаторы теперь могут быть построены поверхPagingDataPresenter
, а не требовать внутренних API Paging илиAsyncPagingDataDiffer
изpaging-runtime
. - Добавлены новые вспомогательные методы
LoadStates
иCombinedLoadStates
вhasError
иisIdle
для проверки, находится лиLoadStates
в состоянии Error илиNotLoading
соответственно. Также добавлен новый метод расширения KotlinawaitNotLoading()
вFlow<CombinedLoadStates>
, который ждет, пока загрузка не перейдет в состояниеNotLoading
или Error. -
PagingData.empty()
теперь по умолчанию отправляет состоянияNotLoading
, если только пользовательскиеLoadStates
не переданы его конструктору. Это отходит от существующего поведения, где он не отправляетLoadStates
при отправке вPagingDataAdapter
или отправляет состояния Loading при сборе какLazyPagingItems
. При сборе какLazyPagingItems
он теперь также будет отображать пустой список сразу после первоначальной композиции.
Совместимость Kotlin с разными платформами
Теперь пагинация поставляет артефакты, совместимые с Kotlin Multiplatform, во многом благодаря работе над проектом CashApp по пагинации на нескольких платформах .
-
paging-common
перенес все API Paging 3 вcommon
и теперь совместим с jvm и iOS в дополнение к Android. -
paging-testing
перенес свой код вcommon
и теперь совместим с jvm и iOS в дополнение к Android. -
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-beta01
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 , b/327682438 )
Версия 3.3.0-альфа04
6 марта 2024 г.
Выпущен androidx.paging:paging-*:3.3.0-alpha04
. Версия 3.3.0-alpha04 содержит эти коммиты .
Исправление ошибок
- Исправлены незначительные ошибки документации, связанные с добавлением мультиплатформенной совместимости Kotlin. ( aosp/2950785 )
Версия 3.3.0-альфа03
7 февраля 2024 г.
Выпущен androidx.paging:paging-*:3.3.0-alpha03
. Версия 3.3.0-alpha03 содержит эти коммиты.
Новые возможности
-
PagingDataPresenter
теперь является публичным классом. Мультиплатформенные презентаторы теперь могут быть построены поверхPagingDataPresenter
, а не требовать внутренние API Paging илиAsyncPagingDataDiffer
изpaging-runtime
. ( Id1f74 , b/315214786 ) - Добавлены новые вспомогательные методы
LoadStates
иCombinedLoadStates
для проверки, находится лиLoadStates
в состоянии Error илиNotLoading
. Также добавлен новый API, который ожидает наLoadStateFlow
, пока загрузка не перейдет в состояниеNotLoading
или Error. ( Id6c67 )
Изменение поведения
-
PagingData.empty()
теперь по умолчанию отправляет состоянияNotLoading
, если только его конструктору не переданы пользовательскиеLoadStates
. Это отличается от существующего поведения, когда он не отправляетLoadStates
при отправке вPagingDataAdapter
или отправляет состояния Loading при сборе какLazyPagingItems
. При сборе какLazyPagingItems
он теперь также будет отображать пустой список сразу после первоначального составления. ( I4d11d , b/301833847 )
Версия 3.3.0-альфа02
20 сентября 2023 г.
Выпущен androidx.paging:paging-*:3.3.0-alpha02
. Версия 3.3.0-alpha02 содержит эти коммиты.
Совместимость Kotlin с разными платформами
Paging теперь поставляет артефакты, совместимые с Kotlin Multiplatform, во многом благодаря работе, выполненной в рамках проекта CashApp по многоплатформенному paging . Это позволит нам избежать расхождений между двумя репозиториями и сохранить их совместимость.
-
paging-common
перенес все API Paging 3 вcommon
и теперь совместим с jvm и iOS в дополнение к Android. -
paging-testing
перенес свой код вcommon
и теперь совместим с jvm и iOS в дополнение к Android. -
paging-compose
переместил свой код вcommon
и поставляет артефакт Android, соответствующий многоплатформенной поддержкеandroidx.compose
. -
paging-runtime
,paging-guava
,paging-rxjava2
иpaging-rxjava3
останутся только для Android.
Изменения API
- Открытый интерфейс Logger, предназначенный только для внутреннего использования, устарел ( I16e95 , b/288623117 ).
Внешний вклад
- Спасибо veyndan из Cash App за помощь в переносе Paging на Kotlin Multiplatform ( #560 , #561 , #562 , #573 , #576 , #577 , #578 , #579 , #580 , #581 , #583 , #584 , #586 , #609 )
Версия 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()
артефакта Paging Testing зависал при передаче потока, созданного с помощью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
composables как приемник дляcollectAsLazyPagingItems()
для предварительного просмотра. - Поддержка всех ленивых макетов, таких как
LazyVerticalGrid
иHorizontalPager
, а также пользовательских ленивых компонентов из библиотек Wear и TV. Это было достигнуто с помощью новых низкоуровневых методов расширенияLazyPagingItems
itemKey
иitemContentType
, которые помогают вам реализовать параметрыkey
иcontentType
в стандартных APIitems
, которые уже существуют дляLazyColumn
,LazyVerticalGrid
, а также их эквивалентов в API, таких какHorizontalPager
. -
items(lazyPagingItems)
иitemsIndexed(lazyPagingItems)
, которые поддерживают толькоLazyListScope
, были объявлены устаревшими.
- Поддержка предварительного просмотра списка поддельных данных путем создания
- Новый артефакт
paging-testing
, который предоставляет API, разработанные для модульного тестирования каждого слоя вашего приложения и его интеграции с Paging в изоляции. Например, он включает- Класс
TestPager
, позволяющий вам проверять поведение вашей собственной реализацииPagingSource
независимо от Pager и реального пользовательского интерфейса. - API-интерфейсы
asPagingSourceFactory
для преобразованияFlow<List<Value>>
или статическогоList<Value>
вPagingSourceFactory
, который можно передать в Pager в тестах - Расширение
asSnapshot
Kotlin дляFlow<PagingData<Value>>
, которое преобразуетFlow<PagingData<Value>>
в прямойList<Value>
.asSnapshot lambda
позволяет имитировать пользовательский интерфейс вашего приложения с помощью API, таких какscrollTo
илиappendScrollWhile
, чтобы вы могли проверить правильность снимка данных в любой точке набора постраничных данных.
- Класс
- Добавлены журналы по умолчанию для отображения отладочной информации Paging на двух уровнях:
VERBOSE
иDEBUG
. Журналы можно включить с помощью командыadb shell setprop log.tag.Paging [DEBUG|VERBOSE]
. Это применимо как к Paging с представлениями, так и к Paging с Compose. - Добавлены конструкторы для
PagingDataAdapter
иAsyncPagingDataDiffer
, которые принимаютCoroutineContext
вместоCoroutineDispatcher
. - Добавлен новый функциональный интерфейс
PagingSourceFactory
, который обеспечивает более явную поверхность API, чем предыдущие () -> лямбдыPagingSource
. Эта фабрика может использоваться для создания экземпляра Pager.
Версия 3.2.0-rc01
21 июня 2023 г.
Выпущен androidx.paging:paging-*:3.2.0-rc01
. Версия 3.2.0-rc01 содержит эти коммиты.
Внешний вклад
- Спасибо Veyndan за вклад в отход от специфики Android/JVM в области пейджинга. ( #553 , #554 , #555 , #559 )
Версия 3.2.0-beta01
7 июня 2023 г.
Выпущен androidx.paging:paging-*:3.2.0-beta01
. Версия 3.2.0-beta01 содержит эти коммиты.
Пейджинг Составить
- Paging Compose официально достиг стабильности API. Таким образом, версия была обновлена с
1.0.0-alpha20
чтобы теперь соответствовать версии всех других артефактов Paging.
Изменения API
- Удалены устаревшие API
items(LazyPagingItems)
иitemsIndexed(LazyPagingItems)
из Paging Compose. См. заметки о выпуске Paging Compose1.0.0-alpha20
для примера их заменяющих API. ( I9626e )
Версия 3.2.0-альфа06
24 мая 2023 г.
Выпущен androidx.paging:paging-*:3.2.0-alpha06
. Версия 3.2.0-alpha06 содержит эти коммиты.
Новые возможности
- Добавлен новый функциональный интерфейс
PagingSourceFactory
, который обеспечивает более явную поверхность API, чем существующие() -> PagingSource
лямбды. Эта фабрика может использоваться для создания экземпляраPager
. ( I33165 , b/280655188 ) - Добавлен новый API
paging-testing
List<Value>.asPagingSourceFactory()
для полученияPagingSourceFactory
, который загружает только из неизменяемого списка данных. Существующее расширениеFlow<List<Value>>
следует по-прежнему использовать для тестирования с несколькими поколениями статических данных. ( Id34d1 , b/280655188 )
Изменения API
- Все публичные API в paging-testing теперь аннотируются
@VisibleForTesting
, чтобы гарантировать, что эти API используются только в тестах. ( I7db6e ) - API
asSnapshot
больше не требует передачиCoroutineScope
. Теперь по умолчанию используется контекст, унаследованный от родительской области. ( Id0a78 , b/282240990 ) - Изменен порядок параметров конструктора
TestPager
для интуитивного соответствия порядку реальных параметров конструктораPager
( I6185a ) - Использование типа лямбда-выражения
() -> PagingSource<Key, Value>
в paging-testing перенесено в типPagingSourceFactory<Key, Value>
. ( I4a950 , b/280655188 )
Изменения в поведении
- Main dispatcher больше не требуется для запуска
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 , b/277233770 )
Улучшения документации
- Обновлена документация по
asPagingSourceFactory()
для уточнения того, что это метод расширения вFlow
, который возвращает повторно используемую фабрику для генерации экземпляровPagingSource
. ( I5ff4f , I705b5 ) - Обновлена документация по конструктору
LoadResult.Page
для пояснения необходимости переопределенияitemsBefore
иitemsAfter
для поддержки переходов. ( Ied354 )
Внешние взносы
- Спасибо Veyndan за вклад в отход от специфики Android/JVM в области пейджинга. ( #525 , #523 , #520 , #519 , #507 , #506 , #505 , #499 , #497 , #496 , #493 )
Версия 3.2.0-альфа04
8 февраля 2023 г.
Выпущен androidx.paging:paging-*:3.2.0-alpha04
. Версия 3.2.0-alpha04 содержит эти коммиты.
Тестирование пейджинга
- Артефакт
paging-testing
теперь содержит методasPagingSourceFactory
для созданияpagingSourceFactory
изFlow<List<Value>>
для предоставления Pager. КаждыйList<Value>>
выдаваемый из Flow, представляет собой генерацию данных Paged. Это облегчает тестирование постраничного обмена, например, преобразованияPagingData
, путем имитации источника данных для Pager, из которого он будет собираться. ( I6f230 , b/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, разработанные для модульного тестирования каждого слоя вашего приложения и его интеграции с Paging в изоляции.
Например, в этот первый выпуск включен класс 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 содержит эти коммиты.
Новые возможности
- Теперь Paging предоставляет журналы через классы
AsyncPagingDataDiffer
илиPagingDataAdapter
для предоставления отладочной информации, собранной изPagingData
. - Журналы можно включить с помощью команды
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE].
( b/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 , b/205344028 )
Исправление ошибок
- Результат
PagingSource.getRefreshKey()
теперь правильно имеет приоритет надinitialKey
в случаях, когда он должен вернуть null, но был установлен ненулевойinitialKey
. ( Ic9542 , b/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-beta01
13 октября 2021 г.
Выпущен androidx.paging:paging-*:3.1.0-beta01
. Версия 3.1.0-beta01 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, при которой множество быстрых доступов к элементам могли привести к их отбрасыванию для рассмотрения в prefetchDistance, что приводило к остановке загрузки страниц. Это особенно проблема, когда много элементов выкладываются одновременно в порядке, который отдает приоритет загрузке против направления прокрутки пользователя. Эти доступы к элементам теперь буферизуются и синхронно приоритезируются, чтобы предотвратить их отбрасывание. ( aosp/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
для RemoteMediatorREFRESH
, но не для PagingSource. Это поведение теперь консолидировано, чтобы всегда возвращатьfalse
, поскольку REFRESH никогда не имеет смысла быть конечным, и теперь документировано как часть контракта API в LoadStates. Принимая решение о завершении пагинации, вы всегда должны делать это в отношении направлений APPEND или PREPEND. ( I047b6 ) LoadStates из Paging теперь ждут допустимых значений от PagingSource и RemoteMediator перед отправкой вниз по течению между поколениями. Это предотвращает отправку NotLoading в CombinedLoadStates.source.refresh новыми поколениями PagingData, если они уже были в состоянии Loading; новые поколения PagingData теперь всегда будут правильно начинаться с Loading для состояния обновления вместо того, чтобы сначала неправильно сбрасываться в NotLoading в некоторых случаях.
Отмена прошлых поколений теперь происходит с готовностью при аннулировании/новых поколениях. Больше не должно быть необходимости использовать .collectLatest в
Flow<PagingData>
, хотя это все еще настоятельно рекомендуется делать. ( I0b2b5 , b/177351336 , b/195028524 ).loadStateFlow
и.addLoadStateListener
в API презентатора больше не отправляют избыточно начальныйCombinedLoadStates
, который всегда имеет состояния медиатора, установленные наnull
, и исходные состояния, установленные наNotLoading(endOfPaginationReached = false)
. Это означает, что:- Состояния медиатора всегда будут заполнены, если вы используете RemoteMediator.
- Регистрация нового прослушивателя 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 не становится недействительным вовремя, она может вернуть несогласованные результаты, если ее реализация зависит от неизменности набора данных, из которого она загружается (например, реализации DB в стиле LIMIT OFFSET). В этом сценарии рекомендуется проверять недействительность после загрузки и возвращать LoadResult.Invalid, что заставляет Paging отбрасывать любые ожидающие или будущие запросы на загрузку к этому PagingSource и делать его недействительным.
Этот тип возврата также поддерживается API Paging2, который использует LivePagedList или RxPagedList. При использовании PagingSource с API-интерфейсами PagedList Paging2, PagedList немедленно отсоединяется, останавливая дальнейшие попытки загрузить данные в этот PagedList и запуская недействительность PagingSource.
LoadResult — это запечатанный класс, что означает, что это изменение несовместимо с исходным кодом, так что варианты использования, напрямую использующие результаты PagingSource.load, должны будут обрабатывать LoadResult.Invalid во время компиляции. Например, пользователи Kotlin, использующие исчерпывающую проверку возвращаемого типа, должны будут добавить проверку на недопустимый тип. ( Id6bd3 , b/191806126 , b/192013267 )
Исправление ошибок
- Обратные вызовы недействительности, добавленные через PagingSource.registerInvalidatedCallback или DataSource.addInvalidatedCallback, теперь автоматически срабатывают, если они были зарегистрированы на PagingSource / DataSource, который уже был недействительным. Это устраняет состояние гонки, из-за которого Paging сбрасывал сигналы недействительности и зависал при предоставлении Source, который уже был недействительным во время начальной загрузки. Кроме того, обратные вызовы недействительности теперь правильно удаляются после срабатывания, поскольку они гарантированно будут вызваны не более одного раза. ( 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 )
Исправление ошибок
- Исправлена ошибка, из-за которой Paging иногда отправлял события no-op different в RecyclerView, что могло приводить к раннему срабатыванию определенных прослушивателей. ( Ic507f , b/182510751 )
Внешний вклад
- Добавлены устаревшие API-интерфейсы PagedList, совместимые с артефактом rxjava3 ( Id1ce2 , b/182497591 ).
Пейджинговая версия Compose 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 , b/194544557 )
Исправление ошибок
- Кэшированные данные из
pager.flow.cachedIn
, которые были собраны вLazyPagingItems
, теперь будут доступны немедленно после восстановления состояния без необходимости асинхронного сбора. Это означает, что кэшированные данные будут готовы к представлению немедленно после первоначальной композиции после восстановления состояния. ( I97a60 , b/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 , b/276989796 )
Изменения API
- Для облегчения перехода на новые API функции расширения
items
иitemsIndexed
вLazyListScope
теперь поддерживают параметрcontentType
, что отражает поддержку в новых API. ( Ib1918 , b/255283378 )
Обновления зависимостей
- Paging Compose обновил свою зависимость с Compose 1.0.5 до Compose 1.2.1. ( Ib1918 , b/255283378 )
Версия 1.0.0-альфа18
8 февраля 2023 г.
androidx.paging:paging-compose:1.0.0-alpha18
выпускается без изменений. Версия 1.0.0-Alpha18 содержит эти коммиты.
Версия 1.0.0-Alpha17
24 октября 2022 г.
androidx.paging:paging-compose:1.0.0-alpha17
выпускается. Версия 1.0.0-Alpha17 содержит эти коммиты.
Новые возможности
- Добавьте поддержку для пользовательского
CoroutineContext
при вызовеcollectLazyPagingItems
. ( I7a574 , b/243182795 , b/233783862 )
Версия 1.0.0-Alpha16
10 августа 2022 г.
androidx.paging:paging-compose:1.0.0-alpha16
выпускается. Версия 1.0.0-Alpha16 содержит эти коммиты.
Новые возможности
- Paging теперь предоставляет журналы через класс
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-Alpha15
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 , b/2248555902 )
Версия 1.0.0-Alpha14
13 октября 2021 г.
androidx.paging:paging-compose:1.0.0-alpha14
выпускается. Версия 1.0.0-Alpha14 содержит эти коммиты.
Версия 1.0.0-альфа13
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 Version1.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-Alpha05
13 января 2021 г.
androidx.paging:paging-compose:1.0.0-alpha05
выпускается. Версия 1.0.0-Alpha05 содержит эти коммиты.
Обновлено, чтобы зависеть от сочинения 1.0.0-альфа10.
Версия 1.0.0-Alpha04
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
, иногда выбрасываемая при использовании APIDataSource
через пути совместимости - Вызов
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 от 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
- Первоклассная поддержка Kotlin Coroutines и Flow.
- Поддержка асинхронной нагрузки с помощью CORUTINES SUSIGNED FUNDES, RXJAVA SINGE или GUAVA DIRUSTABLEFUTURE PRIMITIVES .
- Встроенное состояние нагрузки и сигналы ошибок для адаптивной конструкции пользовательского интерфейса, включая функциональность повторной и обновления.
- Улучшения к слою репозитория
- Упрощенный интерфейс источника данных
- Упрощенная сеть + лиц базы данных
- Поддержка отмены
- Улучшения в презентационном уровне
Известные проблемы
- 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-альфа01
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
Зависимости до AndroidX
Для последующих версий 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
- Additional logging for tracking down IllegalArgumentException bug b/70360195 (and speculative Room-side fix)
- Javadoc sample code fixes b/70411933 , b/71467637