Paging
In dieser Tabelle sind alle Artefakte in der Gruppe androidx.paging
aufgeführt.
Artefakt | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
paging-* | 3.3.2 | - | – | - |
Paging-Compose | 3.3.2 | - | – | - |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von Paging hinzuzufügen, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Cool
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" }
Kotlin
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") }
Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie unter ktx-Dokumentation
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 3.3
Version 3.3.2
7. August 2024
androidx.paging:paging-*:3.3.2
wurde veröffentlicht. Version 3.3.2 enthält diese Commits.
Neue Funktionen
- Für
paging-common
undpaging-testing
wurden neue Kotlin-Multi-Platform-Ziele hinzugefügt:watchos
,tvos
undlinuxArm64
(90c9768) (53e0eca)
Version 3.3.1
24. Juli 2024
androidx.paging:paging-*:3.3.1
wurde veröffentlicht. Version 3.3.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
AsyncPagingDataDiffer
oder darauf basierende APIs wie die mitRecyclerView
verwendetePagingDataAdapter
keine weiteren Ladevorgänge auslösen konnten, wenn die unterstützende Datenquelle beim Scrollen aktualisiert wurde. (I60ca5, b/352586078) - Ein Absturz wurde behoben, der auftrat, wenn Elemente beim Scrollen eines
RecyclerView
mitPagingDataAdapter
oderAsyncPagingDataDiffer
aus der unterstützenden Datenquelle entfernt wurden. (I8c65a, b/347649763)
Version 3.3.0
14. Mai 2024
androidx.paging:paging-*:3.3.0
wurde veröffentlicht. Version 3.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 3.2.0
PagingDataPresenter
ist jetzt eine öffentliche Klasse. Plattformübergreifende Vortragende können jetzt aufPagingDataPresenter
aufbauen und sind nicht mehr auf interne Paging APIs oder dieAsyncPagingDataDiffer
vonpaging-runtime
angewiesen.- Neue Hilfsmethoden
LoadStates
undCombinedLoadStates
wurden inhasError
undisIdle
hinzugefügt, um zu prüfen, obLoadStates
den Status „Fehler“ bzw. den StatusNotLoading
hat. Außerdem wurde eine neueawaitNotLoading()
-Kotlin-Erweiterungsmethode fürFlow<CombinedLoadStates>
hinzugefügt, die wartet, bis ein Ladevorgang entweder den StatusNotLoading
oder Fehler aufweist. PagingData.empty()
sendet jetzt standardmäßigNotLoading
-Status, es sei denn, benutzerdefinierteLoadStates
werden an seinen Konstruktor übergeben. Dies unterscheidet sich vom bisherigen Verhalten, bei dem wederLoadStates
gesendet wird, wenn das Element anPagingDataAdapter
gesendet wird, oder es wird Ladestatus ausgelöst, wenn es alsLazyPagingItems
erfasst wird. Wenn es alsLazyPagingItems
erfasst wird, wird jetzt auch sofort nach der anfänglichen Zusammensetzung eine leere Liste angezeigt.
Kotlin-Kompatibilität mit mehreren Plattformen
Paging liefert jetzt mit Kotlin Multiplatform kompatible Artefakte, was zum Großteil auf Upstream-Arbeiten aus dem Multiplatform-Pging-Projekt von CashApp zurückzuführen ist.
paging-common
hat alle Paging 3-APIs zucommon
verschoben und ist jetzt zusätzlich zu Android auch mit jvm und iOS kompatibel.- Der Code von
paging-testing
wurde zucommon
verschoben und ist jetzt nicht nur mit Android, sondern auch mit jvm und iOS kompatibel. paging-compose
hat seinen Code zucommon
verschoben und liefert ein Android-Artefakt aus, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht.paging-runtime
,paging-guava
,paging-rxjava2
undpaging-rxjava3
sind weiterhin nur für Android verfügbar.
Version 3.3.0-rc01
1. Mai 2024
androidx.paging:paging-*:3.3.0-rc01
wird ohne Änderungen in Paging 3.3.0-beta01 veröffentlicht. Version 3.3.0-rc01 enthält diese Commits.
Version 3.3.0-beta01
3. April 2024
androidx.paging:paging-*:3.3.0-beta01
wird ohne nennenswerte Änderungen veröffentlicht. Version 3.3.0-beta01 enthält diese Commits.
Version 3.3.0-alpha05
20. März 2024
androidx.paging:paging-*:3.3.0-alpha05
wurde veröffentlicht. Version 3.3.0-alpha05 enthält diese Commits.
API-Änderungen
- Beim Paging wird jetzt für allgemeinen Code die AndroidX-Annotation
@MainThread
verwendet. (I78f0d, b/327682438)
Version 3.3.0-alpha04
6. März 2024
androidx.paging:paging-*:3.3.0-alpha04
wurde veröffentlicht. Version 3.3.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Kleinere Dokumentationsfehler im Zusammenhang mit der neuen Kotlin-Multiplattform-Kompatibilität wurden behoben. (aosp/2950785)
Version 3.3.0-alpha03
7. Februar 2024
androidx.paging:paging-*:3.3.0-alpha03
wurde veröffentlicht. Version 3.3.0-alpha03 enthält diese Commits.
Neue Funktionen
PagingDataPresenter
ist jetzt eine öffentliche Klasse. Plattformübergreifende Vortragende können jetzt aufPagingDataPresenter
aufbauen und sind nicht mehr auf interne Paging APIs oder dieAsyncPagingDataDiffer
vonpaging-runtime
angewiesen. (Id1f74, b/315214786)- Neue Hilfsmethoden
LoadStates
undCombinedLoadStates
hinzugefügt, um zu prüfen, obLoadStates
den Status „Fehler“ oder „NotLoading
“ hat. Außerdem wurde eine neue API hinzugefügt, die auf eineLoadStateFlow
wartet, bis ein Ladevorgang in den StatusNotLoading
oder Fehler eingetreten ist. (Id6c67)
Verhaltensänderung
PagingData.empty()
sendet jetzt standardmäßigNotLoading
-Status, es sei denn, benutzerdefinierteLoadStates
werden an seinen Konstruktor übergeben. Dies unterscheidet sich vom bisherigen Verhalten, bei dem wederLoadStates
gesendet wird, wenn das Element anPagingDataAdapter
gesendet wird, oder es wird Ladestatus ausgelöst, wenn es alsLazyPagingItems
erfasst wird. Wenn es alsLazyPagingItems
erfasst wird, wird jetzt auch sofort nach der anfänglichen Zusammensetzung eine leere Liste angezeigt. (I4d11d, b/301833847)
Version 3.3.0-alpha02
20. September 2023
androidx.paging:paging-*:3.3.0-alpha02
wurde veröffentlicht. Version 3.3.0-alpha02 enthält diese Commits.
Kotlin-Kompatibilität mit mehreren Plattformen
Paging liefert jetzt Artefakte, die mit Kotlin Multiplatform kompatibel sind, was zum Großteil auf Upstream-Arbeiten aus dem Multiplatform-Pging-Projekt von CashApp zurückzuführen ist. Auf diese Weise können wir Abweichungen zwischen zwei Repositories vermeiden und sie kompatibel halten.
paging-common
hat alle Paging 3-APIs zucommon
verschoben und ist jetzt zusätzlich zu Android auch mit jvm und iOS kompatibel.- Der Code von
paging-testing
wurde zucommon
verschoben und ist jetzt nicht nur mit Android, sondern auch mit jvm und iOS kompatibel. paging-compose
hat seinen Code zucommon
verschoben und liefert ein Android-Artefakt aus, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht.paging-runtime
,paging-guava
,paging-rxjava2
undpaging-rxjava3
sind weiterhin nur für Android verfügbar.
API-Änderungen
- Die öffentliche Protokollierungsschnittstelle, die nur für die interne Verwendung gedacht war, wurde eingestellt (I16e95, b/288623117).
Externer Beitrag
Version 3.3.0-alpha01
20. September 2023
- Dies ist der erste plattformübergreifende Release der androidx.paging-Bibliotheken. Diese Version hat nur die Artefakte
*-jvm
und*-android
. Verwenden Sie für macOS-, iOS- und Linux-Varianten3.3.0-alpha02
.
Version 3.2
Version 3.2.1
6. September 2023
androidx.paging:paging-*:3.2.1
wurde veröffentlicht. Version 3.2.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem die
asSnapshot()
API des Paging-Testartefakts hängen blieb, wenn ein mitPagingData.from(List)
erstellter Ablauf übergeben wurde, daasSnapshot()
im Gegensatz zurPagingData.from(List, LoadStates)
-Überlastung keine Informationen zum Abschluss des Ladevorgangs hatte. Diese Problemumgehung funktioniert nur für abgeschlossene Abläufe (z.B. einflowOf(PagingData.from(...))
). Für nicht abgeschlossene Abläufe (z.B.MutableStateFlow
, verwenden Sie diePagingData.from
-Überlastung, dieLoadStates
bereitstellt. (I502c3) - Bei der Funktion zum Erstellen von Seiten wird jetzt intern
AndroidUiDispatcher.Main
verwendet, damit neue Daten im selben Frame verfügbar sind, in dem der Ladevorgang abgeschlossen ist. (Ia55af)
Version 3.2.0
26. Juli 2023
androidx.paging:paging-*:3.2.0
wurde veröffentlicht. Version 3.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 3.1.0
- Paging Compose hat die API-Stabilität erreicht und wurde wieder mit dem Rest von Paging zusammengeführt, wo seine Version jetzt mit allen anderen Paging-Artefakten übereinstimmt. Zu den Änderungen seit Version 3.1.0 gehören:
<ph type="x-smartling-placeholder">
- </ph>
- Unterstützung für die Vorschau einer Liste mit fiktiven Daten durch Erstellen einer
PagingData.from(fakeData)
und Einbinden diesesPagingData
in eineMutableStateFlow
(z.B.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). Übergeben Sie diesen Ablauf als Empfänger fürcollectAsLazyPagingItems()
an die zusammensetzbaren@Preview
-Elemente, um eine Vorschau anzuzeigen. - Unterstützung für alle Lazy-Layouts wie
LazyVerticalGrid
undHorizontalPager
sowie benutzerdefinierte Lazy-Komponenten aus Wear- und TV-Mediatheken. Dies wurde durch die neuen ErweiterungsmethodenitemKey
unditemContentType
auf niedrigerer Ebene erreicht, mit denen Sie die Parameterkey
undcontentType
in den standardmäßigenitems
APIs implementieren können, die bereits fürLazyColumn
undLazyVerticalGrid
vorhanden sind, sowie deren Entsprechungen in APIs wieHorizontalPager
.LazyPagingItems
items(lazyPagingItems)
unditemsIndexed(lazyPagingItems)
, die nurLazyListScope
unterstützen, wurden eingestellt.
- Unterstützung für die Vorschau einer Liste mit fiktiven Daten durch Erstellen einer
- Neues
paging-testing
-Artefakt mit APIs, die für den Einheitentest jeder Ebene der App und deren isolierte Einbindung in Paging entwickelt wurden. Zum Beispiel enthält sie <ph type="x-smartling-placeholder">- </ph>
TestPager
, mit der Sie das Verhalten Ihrer eigenen benutzerdefiniertenPagingSource
-Implementierung unabhängig vom Pager und der echten Benutzeroberfläche validieren können.asPagingSourceFactory
APIs zum Transformieren einerFlow<List<Value>>
oder einer statischenList<Value>
in einePagingSourceFactory
, die in Tests an einen Pager übergeben werden kannasSnapshot
Kotlin-Erweiterung fürFlow<PagingData<Value>>
, die denFlow<PagingData<Value>>
in einen direktenList<Value>
übersetzt. Mit demasSnapshot lambda
können Sie die Benutzeroberfläche Ihrer App über APIs wiescrollTo
oderappendScrollWhile
nachahmen, damit Sie jederzeit prüfen können, ob der Daten-Snapshot in Ihrem Satz von Seitendaten korrekt ist.
- Es wurden Standardlogs hinzugefügt, um Informationen zur Paging-Fehlerbehebung auf zwei Ebenen bereitzustellen:
VERBOSE
undDEBUG
. Die Logs können mit dem Befehladb shell setprop log.tag.Paging [DEBUG|VERBOSE]
aktiviert werden. Dies gilt sowohl für das Paging mit Ansichten als auch für das Paging mit Text. - Es wurden Konstruktoren für
PagingDataAdapter
undAsyncPagingDataDiffer
hinzugefügt, dieCoroutineContext
anstelle vonCoroutineDispatcher
akzeptieren. - Es wurde eine neue funktionale
PagingSourceFactory
-Schnittstelle hinzugefügt, die eine explizitere API-Oberfläche als die vorherige API-Oberfläche bietet () ->PagingSource
Lambdas. Diese Factory kann verwendet werden, um einen Pager zu instanziieren.
Version 3.2.0-rc01
21. Juni 2023
androidx.paging:paging-*:3.2.0-rc01
wurde veröffentlicht. Version 3.2.0-rc01 enthält diese Commits.
Externer Beitrag
- Vielen Dank an Veyndan, dass du dazu beiträgst, Paging von Android-/JVM-Besonderheiten zu entfernen. (Nr. 553, Nr. 554, Nr. 555, Nr. 559)
Version 3.2.0-beta01
7. Juni 2023
androidx.paging:paging-*:3.2.0-beta01
wurde veröffentlicht. Version 3.2.0-beta01 enthält diese Commits.
Schreibassistent
- Paging Compose hat offiziell die API-Stabilität erreicht. Aus diesem Grund wurde die Version von
1.0.0-alpha20
aktualisiert, sodass sie jetzt mit der Version aller anderen Seitenartefakte übereinstimmt.
API-Änderungen
- Die verworfenen APIs
items(LazyPagingItems)
unditemsIndexed(LazyPagingItems)
wurden aus der Paging-Funktion entfernt. In den Versionshinweisen zu „Paging Compose1.0.0-alpha20
“ finden Sie ein Beispiel für die Ersatz-APIs. (I9626e)
Version 3.2.0-alpha06
24. Mai 2023
androidx.paging:paging-*:3.2.0-alpha06
wurde veröffentlicht. Version 3.2.0-alpha06 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue funktionale
PagingSourceFactory
-Schnittstelle hinzugefügt, die eine explizitere API-Oberfläche als die bestehenden() -> PagingSource
-Lambdas bietet. Diese Factory kann verwendet werden, um einePager
zu instanziieren. (I33165, b/280655188) - Neue
paging-testing
API vonList<Value>.asPagingSourceFactory()
hinzugefügt, um einePagingSourceFactory
abzurufen, die nur aus einer unveränderlichen Datenliste geladen wird. Die vorhandene Erweiterung aufFlow<List<Value>>
sollte weiterhin für Tests mit mehreren Generationen statischer Daten verwendet werden. (Id34d1, b/280655188)
API-Änderungen
- Alle öffentlichen APIs in Paging-Tests werden jetzt mit
@VisibleForTesting
annotiert, damit diese APIs nur in Tests verwendet werden. (I7db6e) - Für die
asSnapshot
API muss keinCoroutineScope
mehr übergeben werden. Jetzt wird standardmäßig der Kontext verwendet, der vom übergeordneten Bereich übernommen wurde. (Id0a78, b/282240990) TestPager
-Konstruktorparameter neu angeordnet, sodass sie intuitiv mit der Reihenfolge der realenPager
-Konstruktorparameter übereinstimmen (I6185a)- Die Verwendung des Lambda-Typs
() -> PagingSource<Key, Value>
für den TypPagingSourceFactory<Key, Value>
wurde bei Pagingtests migriert. (I4a950, b/280655188)
Änderungen im Verhalten
- Der Hauptdisponent ist nicht mehr für die Ausführung von
asSnapshot
-Seitening-Tests erforderlich. Durch das Festlegen dieses Werts ändert sich das Testverhalten nicht mehr. (Ie56ea)
Version 3.2.0-alpha05
3. Mai 2023
androidx.paging:paging-*:3.2.0-alpha05
wurde veröffentlicht. Version 3.2.0-alpha05 enthält diese Commits.
API-Änderungen
- Die Paging Testing API von
asSnapshot
verwendet jetzt standardmäßig den ParameterloadOperations
auf ein leeres Lambda. Dadurch kannasSnapshot
aufgerufen werden, ohne Ladevorgänge zu übergeben, um die Daten aus dem anfänglichen Aktualisierungsladevorgang abzurufen. (Ied354, b/277233770)
Verbesserte Dokumentation
- Die Dokumentation zu
asPagingSourceFactory()
wurde aktualisiert, um klarzustellen, dass es sich um eine Erweiterungsmethode für eineFlow
handelt, die eine wiederverwendbare Factory zum Generieren vonPagingSource
-Instanzen zurückgibt. (I5ff4f, I705b5) - Die Dokumentation zum
LoadResult.Page
-Konstruktor wurde aktualisiert, um klarzustellen, dassitemsBefore
unditemsAfter
überschrieben werden müssen, um Jumping zu unterstützen. (ID354)
Externe Beiträge
- Vielen Dank an Veyndan, dass du dazu beiträgst, Paging von Android-/JVM-Besonderheiten zu entfernen. (Nr. 525, Nr. 523, Nr. 520, Nr. 519, Nr. 507, Nr. 506, Nr. 505, Nr. 499 #497 #496 #493)
Version 3.2.0-alpha04
8. Februar 2023
androidx.paging:paging-*:3.2.0-alpha04
wurde veröffentlicht. Version 3.2.0-alpha04 enthält diese Commits.
Paging-Tests
- Das Artefakt
paging-testing
enthält jetzt eineasPagingSourceFactory
-Methode, um einepagingSourceFactory
aus einerFlow<List<Value>>
zu erstellen, die einem Pager bereitgestellt wird. Jede vom Ablauf ausgegebeneList<Value>>
stellt eine Generierung von Paged-Daten dar. Dies erleichtert Paging-Tests beispielsweise fürPagingData
-Transformationen, indem eine Datenquelle nachgeahmt wird, aus der der Pager Daten erfassen kann. (I6f230, b/235528239) Das Artefakt
paging-testing
wurde um neue APIs erweitert, mit denen sich prüfen lässt, ob die in einerFlow<PagingData<T>>
enthaltenen Daten korrekt sind. Damit lässt sich beispielsweise die Ausgabe einerFlow<PagingData<T>>
aus Ihrer ViewModel-Ebene bestätigen.Dazu wird die
asSnapshot
Kotlin-Erweiterung aufFlow<PagingData<Value>>
verwendet, die denFlow<PagingData<Value>>
in einen direktenList<Value>
übersetzt. Mit der Lambda-FunktionasSnapshot
können Sie die Benutzeroberfläche Ihrer App über APIs wiescrollTo
oderappendScrollWhile
auf eine wiederholbare und konsistente Weise nachahmen, sodass Sie jederzeit prüfen können, ob der Daten-Snapshot in Ihrem Satz von Seitendaten korrekt ist.// 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
ist einesuspend
-Methode, die innerhalb vonrunTest
ausgeführt werden soll. Weitere Informationen finden Sie unter Kotlin-Koroutinen unter Android testen. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic192/Ic1238
API-Änderungen
- UI-Aufrufe an
getItem
undpeek
inAsyncPagingDataDiffer
undPagingDataAdapter
sind jetzt korrekt als aufrufbar nur im Hauptthread gekennzeichnet. (I699b6) - Platzhalter aus generischen Typen, die von
TestPager
verwendet werden, wurden entfernt. Dadurch wird es einfacher, die Ergebnisse dieser Methoden in Code zu verarbeiten, der in der Programmiersprache Java geschrieben wurde. (I56c42)
Version 3.2.0-alpha03
24. Oktober 2022
androidx.paging:paging-*:3.2.0-alpha03
wurde veröffentlicht. Version 3.2.0-alpha03 enthält diese Commits.
Paging-Tests
Dieser Release enthält ein neues Artefakt: paging-testing
. Dieses Artefakt stellt APIs bereit, die für den Unittest jeder Ebene Ihrer App und deren Integration in Paging für die Isolierung entwickelt wurden.
Dieser erste Release enthält beispielsweise eine TestPager
-Klasse, mit der Sie das Verhalten Ihrer eigenen benutzerdefinierten PagingSource
-Implementierung unabhängig von Pager
und der tatsächlichen Benutzeroberfläche validieren können, die Sie normalerweise für die Simulation der End-to-End-Seiteneinbindung benötigen.
TestPager
sollte als Fake betrachtet werden – als Test-Double, das die tatsächliche Implementierung von Pager
widerspiegelt und gleichzeitig eine vereinfachte API-Oberfläche zum Testen einer PagingSource
bietet. Diese APIs sind suspend
APIs und sollten innerhalb von runTest
ausgeführt werden, wie im Leitfaden zum Testen von Kotlin-Koroutinen unter Android beschrieben.
Ein Beispiel für die verwendeten APIs finden Sie in den room-paging
-Tests, die für die Verwendung von TestPager
refaktoriert wurden.
API-Änderungen
- Ermöglicht eine bequeme Iteration über
LoadResult.Page.data
bisLoadResult.Page.iterator()
. Dies ermöglicht indirekt die Verwendung der Kotlin-Standardbibliotheksmethodeflatten
, wenn einList<LoadResult.Page>
angegeben wird, z. B. mit derpages
-Eigenschaft vonPagingState
, die an die MethodePagingSource.getRefreshKey
übergeben wird. (IE0718)
Version 3.2.0-alpha02
10. August 2022
androidx.paging:paging-*:3.2.0-alpha02
wurde veröffentlicht. Version 3.2.0-alpha02 enthält diese Commits.
Neue Funktionen
- Paging stellt jetzt Logs über die Klassen
AsyncPagingDataDiffer
oderPagingDataAdapter
bereit, um Informationen zur Fehlerbehebung ausPagingData
bereitzustellen. - Die Logs können mit dem
adb shell
-Befehladb shell setprop log.tag.Paging [DEBUG|VERBOSE].
(b/235527159) aktiviert werden.
Fehlerkorrekturen
- Der Fehler aufgrund des fehlenden
PagingDataDiffer
-Konstruktors wurde behoben, wennpaging-common:3.2.0-alpha01
mit der Laufzeitpaging-runtime:3.1.1
oder älter verwendet wurde.(b/235256201)
Version 3.2.0-alpha01
1. Juni 2022
androidx.paging:paging-*:3.2.0-alpha01
wurde veröffentlicht. Version 3.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Es wurden Konstruktoren für
PagingDataAdapter
undAsyncPagingDataDiffer
hinzugefügt, dieCoroutineContext
anstelle vonCoroutineDispatcher
akzeptieren. (Idc878) - Standardmäßig wirken sich
PagingData.from()
undPagingData.empty()
auf der Seite des Vortragenden nicht mehr aufCombinedLoadStates
aus. Es wurde eine neue Überlastung hinzugefügt, die die Übergabe vonsourceLoadStates
undremoteLoadStates
an diese Konstruktoren ermöglicht, um das bestehende Verhalten der Einstellung vonLoadStates
aufrechtzuerhalten, d.h.NotLoading(endOfPaginationReached = false)
) mit der Option, bei Bedarf auch Remote-Zustände hinzuzufügen. WennLoadStates
nicht übergeben werden, wird die vorherigeCombinedLoadStates
auf der Seite des Vortragenden beibehalten, wenn sie die statischePagingData
empfängt. (Ic3ce5, b/205344028)
Fehlerkorrekturen
- Das Ergebnis von
PagingSource.getRefreshKey()
wird jetzt korrekt gegenüberinitialKey
priorisiert, wenn es null zurückgeben würde, aber eininitialKey
-Wert ungleich null festgelegt wurde. (IC9542, b/230391606)
Externer Beitrag
- :compose:ui:ui-test api (updateApi) aufgrund der Migration „test-coroutines-lib“ (I3366d) aktualisiert
Version 3.1
Version 3.1.1
9. März 2022
androidx.paging:paging-*:3.1.1
wurde veröffentlicht. Version 3.1.1 enthält diese Commits.
Fehlerkorrekturen
LoadState.NotLoading
-Zwischenereignisse zwischen Generierungen, die von.cachedIn()
falsch eingefügt wurden, wurden entfernt. Durch diese Änderung ist es viel einfacher, aufLoadState
-Änderungen zu reagieren, da redundanteLoadState.NotLoading
-Ereignisse entfernt werden, die zwischen den Wiederholungsversuchen fehlgeschlagener Ladevorgänge, der Aktualisierung oder der Entwertung aufgetreten sind.
Version 3.1.0
17. November 2021
androidx.paging:paging-*:3.1.0
wurde veröffentlicht. Version 3.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 3.0.0
Flow<PagingData>.observable
undFlow<PagingData>.flowable
APIs sind nicht mehr experimentell- Verhaltensänderungen für
LoadState
: <ph type="x-smartling-placeholder">- </ph>
endOfPaginationReached
ist jetzt sowohl fürPagingSource
als auch fürRemoteMediator
immerfalse
fürLoadType.REFRESH
LoadStates
aus Paging wartet jetzt auf gültige Werte vonPagingSource
undRemoteMediator
, bevor die Ausgabe nachgelagert wird. Neue Generationen vonPagingData
beginnen jetzt im Aktualisierungsstatus immer korrekt mitLoading
und werden in einigen Fällen nicht fälschlicherweise aufNotLoading
zurückgesetzt..loadStateFlow
und.addLoadStateListener
in Präsentations-APIs senden nicht mehr redundant eine anfänglicheCombinedLoadStates
, bei der Vermittlerstatus immer aufnull
festgelegt sind.
- Bei früheren Generationen erfolgt die Kündigung jetzt eifrig bei der Entwertung bzw. bei neuen Generationen. Es sollte für die Verwendung von
.collectLatest
aufFlow<PagingData>
nicht mehr erforderlich sein, wird aber weiterhin empfohlen. PagingSource.LoadResult.Invalid
wurde als neuer Rückgabetyp vonPagingSource.load
hinzugefügt. Dadurch werden durch Paging alle ausstehenden oder zukünftigen Ladeanfragen anPagingSource
verworfen und sie ungültig gemacht. Dieser Rückgabetyp ist darauf ausgelegt, potenziell ungültige oder veraltete Daten zu verarbeiten, die aus der Datenbank oder dem Netzwerk zurückgegeben werden können.- Es wurden die Presenter-APIs
.onPagesPresented
und.addOnPagesUpdatedListener
hinzugefügt, die synchron ausgelöst werden, wenn die Seiten auf der Benutzeroberfläche dargestellt werden. In folgenden Fällen können Seitenaktualisierungen erfolgen: <ph type="x-smartling-placeholder">- </ph>
- Das anfängliche Laden einer neuen Generation von PagingData ist abgeschlossen, unabhängig davon, ob die neue Generation Änderungen an den dargestellten Elementen enthält. d.h. Eine neue Generation, die den anfänglichen Ladevorgang ohne Aktualisierungen abschließt, weil die Liste genau dieselbe ist, löst diesen Callback dennoch aus.
- Eine Seite wird eingefügt, auch wenn die eingefügte Seite keine neuen Elemente enthält.
- Eine Seite wird verworfen, auch wenn sie leer war.
Version 3.1.0-rc01
3. November 2021
androidx.paging:paging-*:3.1.0-rc01
wurde veröffentlicht. Version 3.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Race-Bedingung und ein Speicherleck in .cachedIn() behoben, bei denen mehrere Ladeereignisse durch ein Downstream-Format gesendet wurden, obwohl keine Beobachter vorhanden waren, oder wenn ein Beobachter zu neuen PagingData wechselte. (Ib682e)
Version 3.1.0-beta01
13. Oktober 2021
androidx.paging:paging-*:3.1.0-beta01
wurde veröffentlicht. Version 3.1.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem viele schnell aufgerufene Elemente dazu führten, dass sie für die Berücksichtigung bei „PrefetchDistance“ nicht berücksichtigt wurden und Seitenladevorgänge verzögert wurden. Dies ist besonders dann ein Problem, wenn viele Elemente gleichzeitig in einer Reihenfolge angeordnet sind, bei der das Laden gegenüber der Scrollrichtung des Nutzers priorisiert wird. Diese Elementzugriffe werden jetzt zwischengespeichert und synchron priorisiert, damit sie nicht gelöscht werden. (aosp/1833273)
Version 3.1.0-alpha04
29. September 2021
androidx.paging:paging-*:3.1.0-alpha04
wurde veröffentlicht. Version 3.1.0-alpha04 enthält diese Commits.
API-Änderungen
Flow<PagingData>.observable
undFlow<PagingData>.flowable
API nicht mehr in der Testphase sind. (Ie0bdd)
Fehlerkorrekturen
- Für LoadStates ist
endOfPaginationReached
jetzt immerfalse
fürLoadType.REFRESH
. Zuvor war es möglich, endOfPagination erreicht für RemoteMediatorREFRESH
alstrue
, aber nicht für PagingSource. Dieses Verhalten ist jetzt konsolidiert, sodass Sie immerfalse
da es nie sinnvoll ist, für AKTUALISIERUNGEN AKTUALISIERUNG die als Teil des API-Vertrags in LoadStates dokumentiert sind. Wenn Sie entscheiden, Paginierung beendet ist, sollten Sie dies immer in Bezug auf die Anweisungen „ANHENDEN“ oder „VORANSTELLEN“. (I047b6) Die LoadStates aus Paging warten nun auf gültige Werte von beiden PagingSource und RemoteMediator vor der Übertragung zwischen Generationen. Dadurch wird verhindert, dass neue Generationen von PagingData NotLoading in CombinedLoadStates.source.refresh, wenn dies bereits der Fall war Wird geladen: neuen Generationen von PagingData beginnen, mit "Laden für Aktualisierungsstatus" statt zunächst mit Zurücksetzen auf "NotLoading" in manchen Fällen falsch.
Bei früheren Generationen erfolgt die Kündigung jetzt eifrig bei der Entwertung / neuen Generationen zu entwickeln. Es sollte nicht mehr erforderlich sein, um .collectlatest zu verwenden. am
Flow<PagingData>
, obwohl es nach wie vor dringend empfohlen wird, dies zu tun. (I0b2b5, b/177351336, b/195028524).loadStateFlow
und.addLoadStateListener
in Presenter APIs senden nicht mehr redundant eine ersteCombinedLoadStates
, die immer hat Vermittlerstatus aufnull
und Quellstatus aufNotLoading(endOfPaginationReached = false)
Das bedeutet Folgendes:- Vermittlerstatus werden immer ausgefüllt, wenn Sie RemoteMediator verwenden.
- Neuen LoadState-Listener oder neuen Collector für registrieren
.loadStateFlow
gibt den aktuellen Wert nicht mehr sofort aus wenn keine echteCombinedLoadStates
vonPagingData
Dies kann passieren, wenn ein Collector oder Listener startet bevor einPagingData
gesendet wurde. (I1a748)
Version 3.1.0-alpha03
21. Juli 2021
androidx.paging:paging-*:3.1.0-alpha03
wurde veröffentlicht. Version 3.1.0-alpha03 enthält diese Commits.
API-Änderungen
Ein dritter "LoadResult"-Rückgabetyp "LoadResult.Ungültig" wird zu PagingSource. Wenn ein PagingSource.load LoadResult.Ungültig ist, werden die geladenen Daten durch das Paging verworfen. die PagingSource ungültig machen. Dieser Rückgabetyp dient dazu, potenziell ungültige oder veraltete Daten zu verarbeiten, aus der Datenbank oder dem Netzwerk.
Wenn beispielsweise in die zugrunde liegende Datenbank geschrieben wird, Da die PagingSource keine Zeit entwertet, kann sie Ergebnisse sind inkonsistent, wenn ihre Implementierung vom Unveränderlichkeit des unterstützenden Datasets, aus dem es geladen wird (z.B. BEGRENZUNG OFFSET-Stildatenbankimplementierungen). In diesem Szenario ist es empfohlen, nach dem Laden auf Entwertung zu prüfen und gibt "LoadResult.Ungültig" zurück, wodurch Paging jegliche ausstehende oder zukünftige Ladeanfragen an diese PagingSource und und ungültig erklären.
Dieser Rückgabetyp wird auch von der Paging2 API unterstützt, die die Methode LivePagedList oder RxPagedList. Bei Verwendung einer PagingSource mit der PagedList APIs von Paging2 wird die PagedList sofort getrennt, weitere Versuche, Daten aus dieser PagedList zu laden, und löst die Entwertung für die PagingSource aus.
LoadResult ist eine versiegelte Klasse, d. h., dies ist eine nicht quell nicht kompatible Änderung, sodass in Anwendungsfällen Die Ergebnisse von PagingSource.load müssen LoadResult.Ungültig verarbeiten. zur Kompilierungszeit. Beispielsweise nutzen Kotlin-Nutzer Für die Prüfung des Rückgabetyps muss eine Prüfung hinzugefügt werden. für Ungültiger Typ. (Id6bd3, b/191806126, b/192013267)
Fehlerkorrekturen
- Entwertungs-Callbacks hinzugefügt über PagingSource.register InvalidatedCallback oder DataSource.add InvalidatedCallback jetzt automatisch ausgelöst, wenn sie auf einer PagingSource / DataSource registriert wurden, das bereits ungültig. Dies behebt eine Race-Bedingung, die zu einem Rückgang der Paging geführt hat. zur Entwertung und bleiben hängen, wenn eine Quelle angegeben wird, ist während des anfänglichen Ladevorgangs bereits ungültig. Außerdem entwerten Sie Callbacks werden jetzt ordnungsgemäß entfernt, nachdem sie ausgelöst wurden, wird garantiert höchstens einmal aufgerufen. (I27e69)
- Übermitteln des Anfangswerts des Platzhalters (InitialPagedList) aus einem neu instanziierten PagedList-Stream, z.B. LivePagedListBuilder oder RxPagedListBuilder löschen zuvor geladene Daten nicht mehr.
Version 3.1.0-alpha02
1. Juli 2021
androidx.paging:paging-*:3.1.0-alpha02
wurde veröffentlicht. Version 3.1.0-alpha02 enthält diese Commits.
Neue Funktionen
OnPagesPresented-Listener und Flow Presenter-APIs hinzugefügt die sofort ausgelöst werden, nachdem die präsentierten Seiten in der Benutzeroberfläche aktualisiert wurden.
Da diese Updates mit der Benutzeroberfläche synchron sind, können Sie Adaptermethoden aufrufen. wie .Snapshot und .getItemCount, um den Status nach dem Aktualisierung wurde angewendet. Beachten Sie, dass .Snapshot() explizit aufgerufen, da dies bei jeder Aktualisierung teuer sein kann.
In folgenden Fällen können Seitenaktualisierungen erfolgen:
- Das anfängliche Laden einer neuen Generation von PagingData ist abgeschlossen. unabhängig davon, ob die neue Generation Änderungen am präsentierten Elemente. d.h. Eine neue Generation, die das anfängliche Laden abschließt keine Aktualisierungen vorgenommen haben, weil die Liste identisch ist, lösen diesen Callback aus.
- Eine Seite wird eingefügt, auch wenn die eingefügte Seite keine neue Elemente
- Eine Seite wird gelöscht, auch wenn sie leer war (I272c9, b/189999634).
Fehlerkorrekturen
- Zugriff auf PagedList.dataSource aus dem ursprünglich erstellten Wert von LivePagedList oder RxPagedList nicht mehr fälschlicherweise eine IllegalStateException (I96707)
Version 3.1.0-alpha01
2. Juni 2021
androidx.paging:paging-*:3.1.0-alpha01
wurde veröffentlicht. Version 3.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Die von
paging-rxjava3
bereitgestellten Kurse sind jetzt verfügbar unterandroidx.paging.rxjava3
-Pakets an, damit sie nicht in Konflikt mitpaging-rxjava2
(Ifa7f6)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem beim Paging manchmal „No-Op“-Unterschiede ausgelöst wurden an RecyclerView, was dazu führen kann, dass bestimmte Listener frühzeitig ändern. (IC507f, b/182510751)
Externer Beitrag
- Dem rxjava3-Artefakt wurden verworfene PagedList-kompatible APIs hinzugefügt (Id1ce2, b/182497591).
Paging Compose Version 1.0.0
Version 1.0.0-alpha20
24. Mai 2023
androidx.paging:paging-compose:1.0.0-alpha20
wurde veröffentlicht. Version 1.0.0-alpha20 enthält diese Commits.
Neue Funktionen
- Die Funktion „Seitenerstellung“ unterstützt jetzt die Vorschau einer Liste mit fiktiven Daten. Dazu wird ein
PagingData.from(fakeData)
erstellt und diesesPagingData
in eineMutableStateFlow
eingebunden (z. B.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
. Wenn Sie diese Daten als Eingabe für Ihre@Preview
verwenden, wird durch Aufrufe voncollectAsLazyPagingItems()
eine Vorschau vonLazyPagingItems
bereitgestellt. (I8a78d, b/194544557)
Fehlerkorrekturen
- Im Cache gespeicherte Daten von
pager.flow.cachedIn
, die inLazyPagingItems
erfasst wurden, sind jetzt nach der Statuswiederherstellung sofort verfügbar, ohne dass eine asynchrone Erfassung erforderlich ist. Das bedeutet, dass die im Cache gespeicherten Daten sofort nach der anfänglichen Zusammensetzung dargestellt werden können, nachdem der Status wiederhergestellt wurde. (I97a60, b/177245496)
Version 1.0.0-alpha19
3. Mai 2023
androidx.paging:paging-compose:1.0.0-alpha19
wurde veröffentlicht. Version 1.0.0-alpha19 enthält diese Commits.
Unterstützung für alle Lazy-Layouts
Bisher wurden mit der Funktion „Seitenerstellung“ benutzerdefinierte items
- und itemsIndexed
-Erweiterungen für LazyListScope
bereitgestellt. Das bedeutete, dass die Funktion „Seitenerstellung“ nicht mit anderen Layouts wie LazyVerticalGrid
, HorizontalPager
oder anderen benutzerdefinierten Lazy-Komponenten aus den Wear- und TV-Bibliotheken verwendet werden konnte. Die Behebung dieser Unflexibilität ist das wichtigste Update für diese Version.
Um mehr Lazy-Layouts zu unterstützen, mussten wir APIs auf einer anderen Ebene entwickeln. Statt eine benutzerdefinierte items
API für jedes Lazy-Layout bereitzustellen, bietet Paging Compose jetzt etwas niedrigere Erweiterungsmethoden für LazyPagingItems
in itemKey
und itemContentType
. Diese APIs unterstützen Sie bei der Implementierung der Parameter key
und contentType
in den standardmäßigen items
APIs, die bereits für LazyColumn
und LazyVerticalGrid
vorhanden sind, sowie deren Entsprechungen in APIs wie HorizontalPager
. (Ifa13b, Ib04f0, b/259385813)
Das bedeutet, dass die Unterstützung eines LazyVerticalGrid
so aussehen würde:
// 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)
}
}
Weitere Beispiele für die Verwendung dieser neuen APIs finden Sie in unseren Beispielen.
Durch diese Änderungen werden die Beispiele LazyColumn
und LazyRow
zwar ein paar Zeilen länger, aber wir sind der Meinung, dass Einheitlichkeit in allen Lazy-Layouts ein wichtiger Faktor für Nutzer ist, die die Funktion „Seitenerstellung“ verwenden. Aus diesem Grund wurden die vorhandenen Erweiterungen von LazyListScope
inzwischen eingestellt. (I0c459, I92c8f, b/276989796)
API-Änderungen
- Um die Migration zu den neuen APIs zu erleichtern, unterstützen die Erweiterungsfunktionen
items
unditemsIndexed
inLazyListScope
jetzt einencontentType
-Parameter, der die Unterstützung in den neuen APIs widerspiegelt. (Ib1918, b/255283378)
Aktualisierung der Abhängigkeiten
- Die Abhängigkeit von der Funktion „Seitenerstellung“ wurde von Compose 1.0.5 zu Compose 1.2.1 aktualisiert. (Ib1918, b/255283378)
Version 1.0.0-alpha18
8. Februar 2023
androidx.paging:paging-compose:1.0.0-alpha18
wurde ohne Änderungen freigegeben. Version 1.0.0-alpha18 enthält diese Commits.
Version 1.0.0-alpha17
24. Oktober 2022
androidx.paging:paging-compose:1.0.0-alpha17
wurde veröffentlicht. Version 1.0.0-alpha17 enthält diese Commits.
Neue Funktionen
- Unterstützung für eine benutzerdefinierte
CoroutineContext
beim Aufrufen voncollectLazyPagingItems
hinzufügen. (I7a574, b/243182795, b/233783862)
Version 1.0.0-alpha16
10. August 2022
androidx.paging:paging-compose:1.0.0-alpha16
wurde veröffentlicht. Version 1.0.0-alpha16 enthält diese Commits.
Neue Funktionen
- Paging stellt jetzt Logs über die Klasse
LazyPagingItems
bereit, um Debugging-Informationen bereitzustellen, die aus PagingData erfasst wurden. - Die Logs können mit dem
adb shell
-Befehladb shell setprop log.tag.Paging [DEBUG|VERBOSE]
aktiviert werden. ([b/235527159}(https://issuetracker.google.com/issues/235527159))
Fehlerkorrekturen
- Der Fehler aufgrund des fehlenden
PagingDataDiffer
-Konstruktors wurde behoben, wennpaging-compose:1.0.0-alpha15
mitpaging-common:3.1.1
oder einer älteren Version verwendet wurde.(b/235256201,b/239868768)
Version 1.0.0-alpha15
1. Juni 2022
androidx.paging:paging-compose:1.0.0-alpha15
wurde veröffentlicht. Version 1.0.0-alpha15 enthält diese Commits.
API-Änderungen
- Es wurden Konstruktoren für
PagingDataAdapter
undAsyncPagingDataDiffer
hinzugefügt, dieCoroutineContext
anstelle vonCoroutineDispatcher
akzeptieren. (Idc878)
Fehlerkorrekturen
LazyPagingItems
legt jetzt für die anfänglicheloadState
eineLoadState.Loading
-Aktualisierung fest. (I55043, b/224855902)
Version 1.0.0-alpha14
13. Oktober 2021
androidx.paging:paging-compose:1.0.0-alpha14
wurde veröffentlicht. Version 1.0.0-alpha14 enthält diese Commits.
Version 1.0.0-alpha13
29. September 2021
androidx.paging:paging-compose:1.0.0-alpha13
wurde veröffentlicht. Version 1.0.0-alpha13 enthält diese Commits.
API-Änderungen
- Die Funktion
LazyPagingItems.snapshot()
wurde durch das AttributLazyPagingItems.itemSnapshotList
ersetzt (Ie2da8). - Eingestellte
LazyPagingItems.getAsState()
wurde entfernt (Ie65e4)
Version 1.0.0-alpha12
21. Juli 2021
androidx.paging:paging-compose:1.0.0-alpha12
wurde veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
items(lazyPagingItems)
unditemsIndexed(lazyPagingItems)
, die zum Verbinden von Paging mitLazyColumn/Row
verwendet werden, akzeptieren jetzt den Optionsschlüsselparameter, mit dem Sie einen stabilen Schlüssel für das Element angeben können. Weitere Informationen zu Schlüsseln (I7986d)- Die Funktion „
lazyPagingItems.getAsState(index)
“ wurde verworfen. Verwende stattdessenlazyPagingItems[index]
. (I086cb, b/187339372)
Version 1.0.0-alpha11
30. Juni 2021
androidx.paging:paging-compose:1.0.0-alpha11
wurde veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
Version 1.0.0-alpha10
2. Juni 2021
androidx.paging:paging-compose:1.0.0-alpha10
wurde veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
Version 1.0.0-alpha09
18. Mai 2021
androidx.paging:paging-compose:1.0.0-alpha09
wurde veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- LazyPagingItems „itemCount“ und „Item Getter“ sind jetzt beobachtbar, sodass sie auch mit LazyVerticalGrid verwendet werden können (Ie2446, b/171872064, b/168285687).
Compose-Kompatibilität
androidx.paging:paging-compose:1.0.0-alpha09
ist nur mit der E-Mail-Adresse „Compose“ ab Version1.0.0-beta07
kompatibel.
Version 1.0.0-alpha08
24. Februar 2021
androidx.paging:paging-compose:1.0.0-alpha08
wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
Aktualisiert für die Einbindung in Compose 1.0.0-beta01.
Version 1.0.0-alpha07
10. Februar 2021
androidx.paging:paging-compose:1.0.0-alpha07
wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Aktualisiert für die Einbindung in Compose (Alpha12).
Version 1.0.0-alpha06
28. Januar 2021
androidx.paging:paging-compose:1.0.0-alpha06
wurde veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
Aktualisiert und abhängig von Compose 1.0.0-alpha11.
Version 1.0.0-alpha05
13. Januar 2021
androidx.paging:paging-compose:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Aktualisiert und abhängig von Compose 1.0.0-alpha10.
Version 1.0.0-alpha04
16. Dezember 2020
androidx.paging:paging-compose:1.0.0-alpha04
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Die Convenience-Properties wurden aktualisiert.
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
, um nur vonLoading
aufNotLoading
umzusteigen nachdem sowohl der Vermittler- als auch der QuelllaststatusNotLoading
sind, Remote-Update wurde angewendet. (I65619)
Version 1.0.0-alpha03
2. Dezember 2020
androidx.paging:paging-compose:1.0.0-alpha03
wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
- Aktualisiert, um Compose 1.0.0-alpha08 zu entsprechen.
Version 1.0.0-alpha02
11. November 2020
androidx.paging:paging-compose:1.0.0-alpha02
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Methoden
.peek()
,.snapshot()
,.retry()
und.refresh()
wurden hinzugefügt zuLazyPagingItem
-Elemente mit denselben Funktionen wie inAsyncPagingDataDiffer
/PagingDataAdapter
(Iddfe8, b/172041660)
Version 1.0.0-alpha01
28. Oktober 2020
androidx.paging:paging-compose:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
Das Artefakt paging-compose
ermöglicht die Integration zwischen The Paging Library und Jetpack Compose. Ein einfaches Anwendungsbeispiel:
@Composable
@OptIn(ExperimentalLazyDsl::class)
fun ItemsDemo(flow: Flow<PagingData<String>>) {
val lazyPagingItems = flow.collectAsLazyPagingItems()
LazyColumn {
items(lazyPagingItems) {
Text("Item is $it")
}
}
}
Version 3.0.1
Version 3.0.1
21. Juli 2021
androidx.paging:paging-*:3.0.1
wurde veröffentlicht. Version 3.0.1 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie über den von
LivePagedList
oderRxPagedList
erstellten Anfangswert aufPagedList.dataSource
zugreifen, wird nicht mehr fälschlicherweise eine IllegalStateException ausgelöst (I96707).
Version 3.0.0
Version 3.0.0
5. Mai 2021
androidx.paging:paging-*:3.0.0
wurde veröffentlicht. Version 3.0.0 enthält diese Commits.
Hauptfunktionen von Version 3.0.0
Der Großteil der API aus Paging 2.x.x wurde zugunsten der neuen Paging 3 APIs eingestellt, um die folgenden Verbesserungen zu bieten:
- Erstklassige Unterstützung für Kotlin-Koroutinen und Flow
- Support bei Kündigung
- Integrierter Ladestatus und Fehlersignale
- Funktion „Wiederholen und aktualisieren“
- Alle drei DataSource-Unterklassen wurden in einer einheitlichen PagingSource-Klasse zusammengefasst.
- Benutzerdefinierte Seitentransformationen, einschließlich einer integrierten Transformation zum Hinzufügen von Trennzeichen
- Kopf- und Fußzeilen zu Status werden geladen
Version 3.0.0-rc01
21. April 2021
androidx.paging:paging-*:3.0.0-rc01
wurde veröffentlicht. Version 3.0.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das beim Paging manchmal „No-Op“-Unterschiede ausgelöst wurden an RecyclerView, was dazu führen kann, dass bestimmte Listener frühzeitig ändern. (IC507f, b/182510751)
Version 3.0.0-beta03
24. März 2021
androidx.paging:paging-*:3.0.0-beta03
wurde veröffentlicht. Version 3.0.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Wir haben die Handhabung von Platzhaltern um unerwartete Sprünge in RecyclerView zu verhindern. Weitere Informationen finden Sie unter NullPaddingDiffing.md. (If1490, b/170027529, b/177338149)
- Die verschiedenen PagedList-Builder (alter Kompatibilitätspfad) rufen
DataSource.Factory.create()
nicht mehr fälschlicherweise im Hauptthread auf, wenn.build()
aufgerufen wird. (b/182798948)
Version 3.0.0-beta02
10. März 2021
androidx.paging:paging-*:3.0.0-beta02
wurde veröffentlicht. Version 3.0.0-beta02 enthält diese Commits.
API-Änderungen
- Rx3-Erweiterungen werden jetzt korrekt weitergegeben
@ExperimentalCoroutinesApi
Opt-in erforderlich. Zuvor waren sie in der Methode@get
markiert, die vom Kotlin-Compiler aufgrund von an: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
- Es wurde ein Fehler behoben, bei dem
PagingState
immernull
war, wenn Remote-Aktualisierung aufgerufen. - Es wurde ein Fehler behoben, bei dem von PagingSource zurückgegebene leere Seiten das erneute Abrufen des Seitenabrufs verhindern konnten, um
prefetchDistance
auszuführen, was dazu führte, dass das Paging hängen blieb.
Version 3.0.0-beta01
10. Februar 2021
androidx.paging:paging-*:3.0.0-beta01
wurde veröffentlicht. Version 3.0.0-beta01 enthält diese Commits.
API-Änderungen
- Rx2- und Rx3-Wrapper zeigen jetzt die experimentelle Annotation an,
hängt davon ab. Wenn Sie die Rx-kompatiblen Wrapper in paging-rxjava2 oder
paging-rxjava3 enthält, müssen Sie Nutzungen jetzt mit
@OptIn(ExperimentalCoroutinesApi::class)
(Ib1f9d)
Fehlerkorrekturen
- Problem behoben:
IndexOutOfBoundsException: Inconsistency detected
, das manchmal bei Verwendung vonDataSource
-APIs der Version 2 über Kompatibilitätspfade ausgegeben wurde, wurde behoben. - Der
isInvalid
-Aufruf während der Initialisierung vonDataSource
, wenn er über Kompatibilitätspfade verwendet wurde, wird jetzt korrekt bei "fetchDispatcher" statt im Hauptthread gestartet. Dadurch wird einIllegalStateException
behoben, der auf den Datenbankzugriff auf den Hauptthread zurückzuführen ist, wenn diePagingSource
-Implementierung von Raum verwendet wird.
Version 3.0.0-alpha13
27. Januar 2021
androidx.paging:paging-*:3.0.0-alpha13
wurde veröffentlicht. Version 3.0.0-alpha13 enthält diese Commits.
API-Änderungen
- Die Implementierung von
PagingSource.getRefreshKey
ist nicht mehr optional, nun eine abstrakte Funktion ohne Standardimplementierung. Nutzer, die migriert werden, können entweder weiterhin die Standardeinstellung zurückgeben -Implementierung, die einfachnull
zurückgibt, abergetRefreshKey()
Es sollte eine echte Implementierung geben, die einen Schlüssel basierend auf dem Aktuelle Scrollposition, mit der das Paging weiter geladen werden kann überPagingState.anchorPosition
zentriert um den Darstellungsbereich, wenn möglich. (I4339a) InvalidatingPagingSourceFactory
ist jetzt eine endgültige Klasse (Ia3b0a)- Konfiguration des Terminaltrennzeichens (Kopf-/Fußzeile) zulassen
mit einem zusätzlichen optionalen SeparatorType-Parameter. Die beiden
Optionen sind:
<ph type="x-smartling-placeholder">
- </ph>
FULLY_COMPLETE
: bestehendes Verhalten; auf PagingSource und RemoteMediator, um „endOfPaginationReached“ zu kennzeichnen, bevor das Terminal hinzugefügt wird als Trennzeichen. Wird "RemoteMediator" nicht verwendet, lautet der Wert von remote "loadState". ignoriert. Dies ist vor allem dann sinnvoll, wenn Sie Trennzeichen, wenn der Abschnitt vollständig geladen ist, einschließlich Abrufen aus Remote-Quelle, z.B. Netzwerk.SOURCE_COMPLETE
– nur auf das Markieren von PagingSource warten endOfPaginationReached, auch wenn RemoteMediator verwendet wird. Dadurch können Sie Kopf- und Fußzeilen werden synchron mit den ersten sodass Nutzer nicht scrollen müssen, um zum als Trennzeichen. (Ibe993, b/174700218)
Fehlerkorrekturen
- Ein seltenes Speicherleck wurde behoben, das auftritt, wenn eine PagingSource werden ungültig gemacht, bevor PageFetcher überhaupt mit dem Laden aus dem Dienst beginnen kann. (I9606b, b/174625633)
Version 3.0.0-alpha12
13. Januar 2021
androidx.paging:paging-*:3.0.0-alpha12
wurde veröffentlicht. Version 3.0.0-alpha12 enthält diese Commits.
API-Änderungen
- InvalidatingPagingSourceFactory ist keine abstrakte Klasse mehr. da es noch keine abstrakten Methoden gab. (I4a8c4)
- Es wurde eine Überladung von .cachedIn() hinzugefügt, die ViewModel akzeptiert. anstelle von Lifecycle oder CoroutineScope für Java-Nutzer. (I97d81, b/175332619)
- Erlauben Sie Java-Aufrufern die Verwendung von PagingData-Transformationsvorgängen in
asynchron, indem der Operator „Executor into Transformation“ akzeptiert wird
Argumente. Alle Transformationsoperatoren „-Sync“ haben das Suffix „-Sync“.
entfernt. Nutzer von Kotlin Coroutine müssen dann
Aufruf der Erweiterungsfunktion, die stattdessen einen Blockierblock akzeptiert.
Alle PagingData-Transformationsoperatoren wurden in Erweiterungen verschoben
der statischen PagingDataTransforms-Klasse. Java-Nutzende müssen
können sie über statische Hilfsfunktionen aufgerufen werden, z.B.
PagingDataTransforms.map(pagingData, transform)
Für Nutzer von Kotlin ist die Syntax dieselbe, aber Sie müssen den . (If6885, b/172895919)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem
RemoteMediator.load()
währendadapter.refresh()
nicht aufgerufen wurde, wenn das Ende der Paginierung bereits erreicht war.
Version 3.0.0-alpha11
16. Dezember 2020
androidx.paging:paging-*:3.0.0-alpha11
wurde veröffentlicht. Version 3.0.0-alpha11 enthält diese Commits.
Neue Funktionen
- Für die folgenden grundlegenden Anwendungsfälle ist die Unterstützung gespeicherter Status verfügbar. Die vollständige Unterstützung, insbesondere bei einer geschichteten Quelle, ist noch in Arbeit:
<ph type="x-smartling-placeholder">
- </ph>
- Der Ablauf wird im Cache gespeichert und die Anwendung nicht beendet (z.B. wird der Ablauf in einem Ansichtsmodell im Cache gespeichert und die Aktivität wird während der Verarbeitung neu erstellt)
- Paging-Quelle gezählt, Platzhalter sind aktiviert und das Layout nicht versetzt.
API-Änderungen
PagingSource.getRefreshKey()
ist jetzt eine stabile API (I22f6f, b/173530980).PagingSource.invalidate
ist keine offene Funktion mehr. Wenn Sie Sie über die Entwertung benachrichtigt werden müssen, rufen Sie registerUnzulässige Callback-Methode überschreiben, anstatt die Entwertung außer Kraft zu setzen. (I628d9, b/173029013, b/137971356)- Pager verfügt jetzt über einen einzelnen experimentellen Konstruktor neben seiner regelmäßige Konstruktoren zu erstellen, anstatt experimentelle APIs in ein Verzeichnis nicht experimentelle öffentliche API über die Opt-in-Anmerkung. (I9dc61, b/174531520)
- Die Convenience-Properties wurden aktualisiert.
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
, um nur vonLoading
aufNotLoading
umzusteigen nachdem sowohl der Vermittler- als auch der QuelllaststatusNotLoading
sind, Remote-Update wurde angewendet. (I65619) LoadParams.pageSize wurde entfernt (es war bereits eingestellt). Es wird empfohlen, in Ihrer PagingSource
LoadParams.loadSize
zu verwenden.LoadParams.loadSize
ist immer gleichPagingConfig.pageSize
außer beim Aufruf des anfänglichen Ladevorgangs, bei dem er dem AufrufPagingConfig.initialLoadSize
Wenn Sie Ihre Paging2 DataSource ohne einen Pager oder PagedList,
pageSize
stimmt möglicherweise nicht mitPagingConfig.pageSize
überein, wenn Sie legen auchinitialLoadSize
fest. Wenn es für Ihr Unternehmen wichtig ist, sollten Sie stattdessen einen Pager/PagedList verwenden, der intern die richtige PageSize für Ihre DataSource-Lademethoden. (I98ac7, b/149157296)
Fehlerkorrekturen
- Absturz aufgrund von IllegalStateException in folgenden Fällen behoben: mit Trennzeichen mit festgelegtem PagingConfig.maxSize. (I0ed33, b/174787528)
- Es wurde ein Fehler behoben, bei dem der Ladestatus für VORAB / APPEND nicht angezeigt wurde.
Sofort auf
NotLoading(endOfPaginationReached = true)
aktualisieren nach dem anfänglichen Laden, wenn RemoteMediator festgelegt wurde (I8cf5a) - Es wurde ein Fehler behoben, bei dem von präsentierenden APIs wie .Snapshot(), .peek() usw. die vorherige (veraltete) Liste in ListUpdateCallback-Updates zurückgegeben wurde.
- Es wurde ein Fehler behoben, durch den Trennzeichen mit Operatoren keine Kopf- oder Fußzeilen hinzufügten, wenn sie mit RemoteMediator verwendet wurden.
- Es wurde ein Fehler behoben, bei dem LoadState-Aktualisierungen von NotLoading für RemoteMediator im Ladestatus hängen blieben.
- Es wurde ein Fehler behoben, bei dem die Paging2.0-Kompatibilitäts-API
.asPagingSourceFactory()
dazu führen konnte, dass dasDataSource
-Element als Sicherung auf dem falschen CoroutineDispatcher-Wert initialisiert wurde. Dadurch werden ein Absturz und mögliche ANR-Fehler behoben, insbesondere wenn die aktuelle Implementierung von PagingSource von Room verwendet wird, die diesen Kompatibilitätspfad verwendet.
Version 3.0.0-alpha10
2. Dezember 2020
androidx.paging:paging-*:3.0.0-alpha10
wurde veröffentlicht. Version 3.0.0-alpha10 enthält diese Commits.
API-Änderungen
Die verworfenen APIs
dataRefreshFlow
unddataRefreshListener
wurden entfernt da sie bei Aktualisierungen von loadStateFlow / Listener redundant sind. Für zu migrieren, lautet das Äquivalent zu "loadStateFlow":loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Fehlerkorrekturen
- endOfPaginationReached für RemoteMediator
REFRESH
jetzt werden korrekt an LoadState-Updates weitergegeben und verhindert Remote-APPEND
undPREPEND
vom Auslösen entfernt. (I94a3f, b/155290248) - Eine leere Liste wird angezeigt, weil entweder die Anfangsseite leer ist oder
Starke Filter verhindern nicht mehr, dass Paging
PREPEND
ausgelöst wird. oderAPPEND
geladen wird. (I3e702, b/168169730) getRefreshKey
wurde nicht aufgerufen. der nachfolgenden Generationen von PagingSource, wenn die Entwertung schnell erfolgt. (I45460, b/170027530)
Externer Beitrag
- Eine neue abstrakte Klasse InvalidatingPagingSourceFactory wurde hinzugefügt.
mit einer
.invalidate()
API, die die Entwertung an alle PagingSources weiterleitet die sie ausgibt. Vielen Dank an @claraf3. (Ie71fc, b/160716447)
Bekannte Probleme
- Kopf- und Fußzeilen aus der Transformation .insertSeparators() werden möglicherweise nicht sofort angezeigt, wenn RemoteMediator b/172254056 verwendet wird.
- Die Verwendung von RemoteMediator kann dazu führen, dass Remote
LoadState
hängen bleibt, wenn die Entwertung abgeschlossen ist undPagingSource.load(LoadParams.Refresh(...))
abgeschlossen ist, bevorRemoteMediator.load()
b/173717820 zurückgibt.
Version 3.0.0-alpha09
11. November 2020
androidx.paging:paging-*:3.0.0-alpha09
wurde veröffentlicht. Version 3.0.0-alpha09 enthält diese Commits.
API-Änderungen
- dataRefreshFlow / Listener-Methoden mit einem ersetzt die Klausel. (I6e2dd)
Fehlerkorrekturen
- Problem behoben, bei dem
IllegalArgumentException
ausgegeben wurde, wenn Trennzeichen mit RemoteMediator verwendet wurden und eine Entwertung ausgelöst wurde, während ein Remote-Ladevorgang, der endOfPagination zurückgeben würde, noch ausgeführt wurde (I3a260)
Version 3.0.0-alpha08
28. Oktober 2020
androidx.paging:paging-*:3.0.0-alpha08
wurde veröffentlicht. Version 3.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Die Kotlin-/Java-Varianten von
DataSource.InvalidatedCallback
wurden kombiniert, indem SAM-Conversions in Kotlin über funktionale (in Kotlin 1.4 verfügbar). Dadurch wird auch ein Fehler behoben, bei dem Die Kotlin-Variante von "Entwertung von Callbacks" wurde nach der Transformation nicht aufgerufen. von.map
oder.mapByPage
(I1f244, b/165313046)
Fehlerkorrekturen
- Die Interaktion des Seitentyps mit ViewPager wurde erheblich verbessert. Insbesondere wird durch Paging kein
RemoteMediator#load
-Aufruf mehr abgebrochen, weil eine Seite ungültig geworden ist. Außerdem wird erst dann eine Anfrage zum Anfügen/Voranstellen des Ladevorgangs gesendet, wenn REFRESH erforderlich ist, bis die REFRESH-Anfrage erfolgreich abgeschlossen wurde. (I6390b, b/162252536) - API-Lint-Prüfung für MissingGetterMatchingBuilder ist für Androidx aktiviert (I4bbea, b/138602561).
- Es wurde ein Fehler behoben, durch den
.withLoadState*
ConcatAdapter
-Hilfsprogrammen Absturz aufgrund der Benachrichtigung von RecyclerView aus dem Hintergrundthread (I18bb5, b/170988309) - Es wurde ein Fehler behoben, bei dem das Laden einer sehr kleinen, nicht leeren Seite manchmal verhindert, dass der Prefetch Ladevorgänge korrekt auslöste.Iffda3 b/169259468
Version 3.0.0-alpha07
1. Oktober 2020
androidx.paging:paging-*:3.0.0-alpha07
wurde veröffentlicht. Version 3.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Async PagingData Guava-basierte Operatoren akzeptieren jetzt einen Executor als Parameter verwenden, um den Ausführungskontext zu steuern. (ID4372)
Fehlerkorrekturen
- Behebung des Fehlers "IndexOutOfBounds", der in RemoteMediator aufgrund einer Race-Bedingung. (I00b7f, b/165821814)
- Es wurde eine Race-Bedingung in DataSource -> behoben. PagingSource-Konvertierung, die dazu führen könnte, dass die resultierende PagingSource Entwertungssignale von DataSource ignoriert.
- Es wurde ein Problem in der Seitenabruflogik behoben, bei dem neue Generationen von PagingSource manchmal nicht erfasst wurden, bis PagingDataAdapter.refresh() aufgerufen wurde.
- Es wurde ein Problem behoben, durch das die Scrollposition manchmal verloren ging, wenn eine DataSource, die in Verbindung mit RemoteMediator in eine PagingSource (wie die von Room erzeugte) konvertiert wurde, verwendet wurde.
Externer Beitrag
- Vielen Dank an @simonschiller für das Hinzufügen von RxJava2-, RxJava3- und Guava-basierten asynchronen Transformationsoperatoren für PagingData!
Version 3.0.0-alpha06
2. September 2020
androidx.paging:paging-*:3.0.0-alpha06
wurde veröffentlicht. Version 3.0.0-alpha06 enthält diese Commits.
API-Änderungen
UnsupportedOperationException
mit klareren Botschaften rund um fehlende Unterstützung für stabile IDs wird nun gemeldet,PagingDataAdapter.setHasStableIds
wird aufgerufen. (Ib3890, b/158801427)
Fehlerkorrekturen
- Mit insertSeparators werden keine leeren Seiten mehr herausgefiltert, Vorabrufen können vom Vortragenden auch dann eingehalten werden, wenn viele leere Seiten eingefügt werden. (I9cff6, b/162538908)
Version 3.0.0-alpha05
19. August 2020
androidx.paging:paging-*:3.0.0-alpha05
wurde veröffentlicht. Version 3.0.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Beim Paging werden Seiten jetzt korrekt vorab abgerufen, auch wenn die dargestellten Daten stark gefiltert sind
- Wenn
LoadResult.Error
für einen wiederholten Ladevorgang zurückgegeben wird, löst beim Elementzugriff nicht mehr fälschlicherweise ein neuer Versuch aus
Externer Beitrag
- Danke an Clara F für die Unterstützung bei der Bereinigung einiger Tests! (549612)
Version 3.0.0-alpha04
5. August 2020
androidx.paging:paging-*:3.0.0-alpha04
wurde veröffentlicht. Version 3.0.0-alpha04 enthält diese Commits.
API-Änderungen
peek()
API wurdeAsyncPagingDataDiffer
undPagingDataAdapter
, um den präsentierten Datenzugriff ohne Triggerseite zuzulassen geladen wird. (I38898, b/159104197)snapshot()
-API zuPagingDataAdapter
hinzugefügt undAsyncPagingDataDiffer
, um das Abrufen der präsentierten Elemente zu ermöglichen, den Seitenabruf ausgelöst. (I566b6, b/159104197)PagingData.from(List<T>)
-Konstruktor hinzugefügt, um zuzulassen Sie präsentieren statische Listen, die mit dem PagingData-Fluss zum Anzeigen statischer Listen in bestimmten Zuständen, z.B. vor oder einfach zum Testen von Transformationen. (Id134d)- dataRefresh Flow / Listener APIs in der ursprünglichen Form einstellen Der Status der dargestellten Elemente soll unter REFRESH verfügbar gemacht werden. Durch Verbesserungen des „loadState Flow“- und der Listener-Callback-Timings und der „itemCount“-Eigenschaft ist dieser Vorgang redundant (Ia19f3).
- RxJava3-Kompatibilitäts-Wrapper für
PagingSource
undRemoteMediator
hinzugefügt (I49ef3, b/161480176)
Fehlerkorrekturen
PositionalDataSource
inPagingSource
umgewandelt übertoPagingSourceFactory
-Hilfsprogramm, einschließlichPagingSource
, das vom Chatroom generiert wurde sich jetzt korrekt kennzeichnen, um das Springen zu unterstützen. (I3e84c, b/162161201)- Es wurde ein Fehler behoben, bei dem die synchrone Variante von "submitData" verwendet wurde.
führt manchmal zu einem Rennen mit
ClosedSendChannelException
(I4d702, b/160192222)
Externer Beitrag
- Vielen Dank an Zac Sweers für das Hinzufügen von RxJava3-Kompatibilitäts-Wrappern im Namen von Slack! (I49ef3, b/161480176)
Version 3.0.0-alpha03
22. Juli 2020
androidx.paging:paging-*:3.0.0-alpha03
wurde veröffentlicht. Version 3.0.0-alpha03 enthält diese Commits.
API-Änderungen
- Der Konstruktor für PagingState ist jetzt öffentlich, was das Testen von Implementierungen von getRefreshKey() vereinfachen sollte (I8bf15).
- DataSource-Kotlin-Zuordnungsfunktionsvarianten aus Java ausgeblendet, um Unklarheiten zwischen Original- und Kotlin-Varianten gelöst werden. (If7b23, b/161150011)
- Redundante APIs, die Kotlin-Nutzern helfen sollen, als @JvmSynthetic (I56ae5) gekennzeichnet.
- Überlastungen für den Konstruktor von LoadResult.Page hinzugefügt wodurch der Standardwert für „itemBefore“ und „itemsAfter“ auf COUNT_UNDEFINED (I47849) festgelegt wird
- Bestehende PagingData-Operatoren akzeptieren Unterbrechungsmethoden jetzt mit den neuen Funktionen „mapSync“, „flatMapSync“ und „filterSync“, für Java-Nutzende. Die bestehenden Transformationsmethoden wurden wurden zu den Erweiterungsfunktionen verschoben, sodass Kotlin-Nutzer diese jetzt importieren müssen. (I34239, b/159983232)
Fehlerkorrekturen
- Raum- und Positionaldatenquellen-Plagingquellen werden jetzt ein vorangestelltes Trennzeichen als Teil der ersten Seite anzuzeigen, damit der Nutzer ohne scrollen zu müssen. (I6f747, b/160257628)
- Zugriff auf Element über Platzhalter Laden von PagingSource richtig auslösen, bis eine Seite zurückgegeben wird, die den angeforderten Index erfüllt nach der Transformation durch PagingData.filter() (I95625, b/158763195)
- Fehler behoben, bei dem manchmal nach PagingSource gibt einen Fehler zurück, der PagingDataAdapter.retry() verhindern könnte durch einen Wiederholungsversuch. (I1084f, b/160194384)
- Es wurde ein Problem behoben, durch das der Zugriff auf ein Element nach dem Verschieben einer Seite möglicherweise Es werden keine Seiten geladen, obwohl der Elementzugriff innerhalb von „prefetchDistance“ erfolgte (Ie95ae, b/160038730).
- Durch Festlegen von PagingConfig.maxSize werden keine Platzhalter mehr aktiviert nach einem Drop-Ereignis (I2be29, b/159667766)
Version 3.0.0-alpha02
24. Juni 2020
androidx.paging:paging-*:3.0.0-alpha02
wurde veröffentlicht. Version 3.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Zusätzliche Überlastungen für den Konstruktor von
PagingConfig
mit allgemeinen Standardwerten (I39c50, b/158576040) - Überlastungen für Konstruktoren von
PagingDataAdapter
undAsyncPagingDataDiffer
mit allgemeinen Standardwerten (Ie91f5) - Die Adapter-APIs
dataRefreshFlow
unddataRefreshListener
übergeben Sie jetzt einen booleschen Wert, um zu signalisieren, obPagingData
leer ist (I6e37e, b/159054196). - RxJava und Guava APIs für RemoteMediator hinzugefügt: RxRemoteMediator und ListenableFutureRemoteMediator
- PagingState wurde um Hilfsfunktionen für den allgemeinen Elementzugriff ergänzt, z. B.
isEmpty()
undfirstItemOrNull()
(I3b5b6, b/158892717).
Fehlerkorrekturen
- Pager prüft jetzt die Wiederverwendung von PagingSource in der Factory, um die versehentliche Wiederverwendung ungültiger PagingSources zu verhindern, was einen unklaren Fehler verursachte (I99809, b/158486430).
- Fehler von RemoteMediator REFRESH verhindern nicht mehr das Laden von PagingSource (I38b1b, b/158892717).
- Die nicht sperrende Version von
submitData
verursacht keinen Absturz mehr aufgrund der gleichzeitigen Erfassung auf mehrerenPagingData
-Elementen, wenn wird nach der ausgesetzten Version vonsubmitData
aufgerufen. (I26358, b/158048877) - Problem behoben: "Daten können nicht zweimal vom Pager abgerufen werden" Ausnahme, die nach der Konfigurationsänderung auftreten könnte (I58bcc, b/158784811)
Version 3.0.0-alpha01
10. Juni 2020
androidx.paging:paging-*:3.0.0-alpha01
wurde veröffentlicht. Version 3.0.0-alpha01 enthält diese Commits.
Die Paging Library wurde auf Version 3.0 aktualisiert, um mehrere wichtige neue Funktionen zu ermöglichen.
Neue Funktionen von Version 3.0
- Erstklassige Unterstützung für Kotlin-Koroutinen und Flow.
- Unterstützung für asynchrones Laden mit Aussetzen von Coroutinen, RxJava Single- oder Guava ListenableFuture-Primitive.
- Integrierter Ladestatus und Fehlersignale für ein responsives UI-Design, einschließlich der Funktion zum Wiederholen und Aktualisieren.
- Verbesserungen der Repository-Ebene
<ph type="x-smartling-placeholder">
- </ph>
- Vereinfachte Datenquellenoberfläche
- Vereinfachte Netzwerk- und Datenbankpaginierung
- Support bei Kündigung
- Verbesserungen an der Präsentationsebene <ph type="x-smartling-placeholder">
Bekannte Probleme
- Javadocs für Paging 3 sind noch nicht verfügbar. Verwenden Sie in der Zwischenzeit die oben verlinkten Anleitungen oder die Kotlin-Dokumentation. (b/158614050)
Version 2.1.2
Version 2.1.2
18. März 2020
androidx.paging:paging:2.1.2
wurde veröffentlicht. Version 2.1.2 enthält diese Commits gegenüber 2.1.0.
Fehlerkorrekturen
- Fehlerkorrektur für
IndexOutOfBoundsException
in seltenen Fällen, wenn eine Position während der Entwertung konvertiert wurde.
Release-Problem
Paging-Version
2.1.1
wurde aus einem falsch konfigurierten Zweig falsch veröffentlicht und stellt teilweise implementierte APIs und Funktionen bereit, die in einer zukünftigen Version verfügbar sind.Paging
2.1.2
enthält die Korrektur der Lastzentrierung, die ursprünglich in 2.1.1 veröffentlicht wurde, aber diesmal korrekt auf Version 2.1.0 gesetzt wurde. Es wird dringend empfohlen, ein Upgrade auf diese Version durchzuführen, wenn Sie derzeit Version 2.1.1 verwenden.
Version 2.1.1
Version 2.1.1
18. Dezember 2019
androidx.paging:paging-*:2.1.1
wurde veröffentlicht. Version 2.1.1 enthält diese Commits.
Fehlerkorrekturen
- Zusammenhängende anfängliche Ladevorgänge aus PositionalDataSources sind jetzt auf den letzten Zugriff zentriert, wenn Platzhalter deaktiviert sind
Version 2.1.0
Version 2.1.0
25. Januar 2019
Paging 2.1.0
wurde ohne Änderungen gegenüber 2.1.0-rc01
freigegeben.
Version 2.1.0-rc01
6. Dezember 2018
Paging 2.1.0-rc01
wurde ohne Änderungen gegenüber 2.1.0-beta01
freigegeben.
Version 2.1.0-beta01
1. November 2018
Paging 2.1.0-beta01
wurde ohne Änderungen gegenüber 2.1.0-alpha01
freigegeben.
Version 2.1.0-alpha01
12. Oktober 2018
Die Paging-2.1.0-alpha01
enthält zwei wichtige Neuerungen: das Entfernen von Seiten und KTX-Erweiterungsbibliotheken für jedes Artefakt sowie mehrere andere API-Änderungen und Fehlerkorrekturen.
API-Änderungen
PagedList.Config.Builder.setMaxSize()
zur Begrenzung der Anzahl der geladenen Elemente im Arbeitsspeicher hinzugefügt.androidx.paging.Config()
wurde als Kotlin-Alternative fürPagedList.Config.Builder
hinzugefügt.androidx.paging.PagedList()
wurde als Kotlin-Alternative fürPagedList.Builder
hinzugefügt.DataSourceFactory.toLiveData()
wurde als Kotlin-Alternative fürLivePagedListBuilder
hinzugefügt.DataSourceFactory.toObservable()
undtoFlowable()
als Kotlin-Alternativen fürRxPagedListBuilder
hinzugefügtAsyncPagedListDiffer.addPagedListListener()
wurde hinzugefügt, um zu prüfen, ob „PagedList“ ausgetauscht wird. b/111698609PagedListAdapter.onCurrentListChanged()
Variante wurde hinzugefügt, die die alte und die neue Liste übergibt. Die vorherige Variante wurde eingestellt.- Es wurden
PagedListAdapter/AsyncPagedListDiffer.submitList()
-Varianten hinzugefügt, die einen zusätzlichen Callback verwenden, der nach dem Differenzieren ausgelöst wird, wenn die Paged-Liste angezeigt wird. Auf diese Weise können Sie einen PagedList-Austausch mit anderen Aktualisierungen der Benutzeroberfläche synchronisieren. b/73781068 PagedList.getLoadedCount()
wurde hinzugefügt, damit du weißt, wie viele Elemente sich im Arbeitsspeicher befinden. Der Rückgabewert ist immer gleich.size()
, wenn Platzhalter deaktiviert sind.
Fehlerkorrekturen
- Es wurde eine Race-Bedingung behoben, die auftrat, wenn Listen unterschiedlich wiederverwendet werden b/111591017.
PagedList.loadAround()
gibt jetztIndexOutOfBoundsException
aus, wenn der Index ungültig ist. Zuvor konnte sie mit einer unklaren anderen Ausnahme abstürzen.- Problem behoben, bei dem eine extrem kleine anfängliche Ladegröße zusammen mit unveränderten Daten dazu führte, dass kein weiteres Laden von b/113122599 erfolgte.
Version 2.0.0
Version 2.0.0
1. Oktober 2018
Paging 2.0.0
wurde mit einer einzigen Fehlerkorrektur veröffentlicht.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der bei sehr schnellem Scrollen unter Verwendung von
PositionalDataSource
und Platzhaltern b/114635383 auftreten konnte.
Version 2.0.0-beta01
2. Juli 2018
Fehlerkorrekturen
- Problem behoben, bei dem Inhalte in einigen vorangestellten Fällen nicht mehr angezeigt wurden (Platzhalter deaktiviert, PositionalDataSource) b/80149146
- (Bereits in
1.0.1
veröffentlicht) Abstürze, bei denenPagedListAdapter
undAsyncPagedListDiffer
keine Verschiebungsereignisse signalisierten, wurden behoben. b/110711937
Abhängigkeiten vor AndroidX
Für die folgenden Versionen der Paging-Funktion vor AndroidX sind die folgenden Abhängigkeiten eingeschlossen:
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"
}
Version 1.0.1
Version 1.0.1
26. Juni 2018
Paging 1.0.1
wurde mit einer einzigen Fehlerkorrektur in runtime
veröffentlicht. Aus Gründen der Stabilität empfehlen wir dringend, 1.0.1
zu verwenden. Das Paging von RxJava2 1.0.1
wurde ebenfalls veröffentlicht und ist identisch mit 1.0.0-rc1
.
Fehlerkorrekturen
- Abstürze, bei denen
PagedListAdapter
undAsyncPagedListDiffer
keine Verschiebungsereignisse signalisiert haben, wurden behoben. b/110711937
RxJava2 Version 1.0.0
RxJava2-Version 1.0.0-rc1
16. Mai 2018
Das Paging von RxJava2 1.0.0-rc1
wird auf den Releasekandidaten umgestellt, ohne dass sich gegenüber dem ursprünglichen Wert Änderungen ergeben haben
Alpha.
Version 1.0.0
Version 1.0.0-rc1
19. April 2018 Versionskandidaten für Seitenumbruch
Es sind keine weiteren bekannten Probleme oder neuen Funktionen geplant für den
Paging 1.0.0
-Release. Führen Sie ein Upgrade Ihrer Projekte durch, um 1.0.0-rc1
zu verwenden und
hilf uns beim Kampftest, damit wir einen steinharten 1.0.0
versenden können.
In diesem Release gibt es keine Änderungen. Er ist mit 1.0.0-beta1
identisch.
Version 1.0.0-beta1
5. April 2018
Paging ist für kurze Zeit in der Betaphase, bevor der Kandidaten freigegeben wird.
Wir planen keine weiteren API-Änderungen für Paging 1.0
und die Messlatte für API-Änderungen sind sehr hoch.
Alpha RxJava2-Unterstützung für Paging wird als separates optionales Modul veröffentlicht (android.arch.paging:rxjava2:1.0.0-alpha1
)
und wird vorübergehend separat versioniert, bis sich dies stabilisiert.
Diese neue Bibliothek bietet eine RxJava2-Alternative zu LivePagedListBuilder
, mit der Sie
Observable
und Flowable
mit Scheduler
statt Executor
:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
Java
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
Neue Funktionen
RxPagedListBuilder
wird über das neue Artefaktandroid.arch.paging:rxjava2
hinzugefügt.
API-Änderungen
API-Änderungen zur Verdeutlichung der Rolle von Executors in Buildern:
setBackgroundThreadExecutor()
wurde insetFetchExecutor()
umbenannt (inPagedList.Builder
undLivePagedListBuilder
)setMainThreadExecutor()
wurde insetNotifyExecutor()
(inPagedList.Builder
) umbenannt.
PagedList.mCallbacks
Mitglied ist jetzt privat.
Fehlerkorrekturen
LivePagedListBuilder
löst den anfänglichenPagedList
-Ladevorgang für den angegebenen Executor aus statt des Arch Components IO-Thread-Pools.Das Verhalten bei der Entwertung in internen
DataSource
-Wrappern (zur Implementierung vonDataSource.map
, sowie durch Platzhalter deaktiviertesPositionalDataSource
Laden) b/77237534
Version 1.0.0-alpha7
21. März 2018
Paging 1.0.0-alpha7
wird zusammen mit den Lebenszyklen 1.1.1
veröffentlicht. Da die Paginierung von Alpha7 von der oben genannten Verschiebung der Function
-Klasse abhängt, müssen Sie die lifecycle:runtime
-Abhängigkeit auf android.arch.lifecycle:runtime:1.1.1
aktualisieren.
Paging alpha7
wird voraussichtlich als letzte Version verfügbar sein, bevor die Funktion zur Paging-Funktion in der Betaversion verfügbar ist.
API-Änderungen
DataSource.LoadParams
-Objekte haben jetzt einen öffentlichen Konstruktor undDataSource.LoadCallback
-Objekte sind jetzt abstrakt. Dies ermöglicht das Wrapping einesDataSource
-Objekts oder das direkte Testen einesDataSource
-Objekts mit einem simulierten Callback. b/72600421- Mapper für DataSource und DataSource.Factory
<ph type="x-smartling-placeholder">
- </ph>
- Mit
map(Function<IN,OUT>)
können Sie Ergebnisse, die von einemDataSource
geladen wurden, transformieren, zusammenfassen oder dekorieren. mapByPage(<List<IN>,List<OUT>>)
aktiviert dasselbe für die Batchverarbeitung (z.B. wenn aus SQL geladene Elemente zusätzlich eine separate Datenbank abfragen müssen, was im Batch möglich ist).
- Mit
PagedList#getDataSource()
wurde als praktische Methode hinzugefügt b/72611341- Alle verworfenen Klassen wurden aus der API entfernt, einschließlich der Überreste des Pakets
recyclerview.extensions
und desLivePagedListProvider
. DataSource.Factory
wird von einer Schnittstelle in eine abstrakte Klasse geändert, um Kartenfunktionen zu aktivieren.
Fehlerkorrekturen
- Die Builder wurden zu endgültig geändert. b/70848565
- Die Implementierung des Raums
DataSource
wurde jetzt korrigiert, um Anfragen an mehrere Tabellen zu verarbeiten. Diese Korrektur ist in Raum 1.1.0-beta1 enthalten, siehe oben. - Es wurde ein Fehler behoben, bei dem
BoundaryCallback.onItemAtEndLoaded
fürPositionalDataSource
nicht aufgerufen wurde, wenn Platzhalter aktiviert und ist die Gesamtgröße genau ein Vielfaches der Seitengröße.
Version 1.0.0-alpha5
22. Januar 2018
Fehlerkorrekturen
- Fehler beim Laden von Seiten bei deaktivierten Platzhaltern beheben b/70573345
- Zusätzliches Logging zum Aufspüren des IllegalArgumentException-Fehlers b/70360195 (und spekulative Korrektur im Raum)
- Fehlerkorrekturen für den Javadoc-Beispielcode b/70411933 und b/71467637