Ta tabela zawiera listę wszystkich artefaktów w grupie androidx.paging.
| Artefakt | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| paging-* | 3.5.3 | - | - | - |
| paging-compose | 3.5.3 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od Paging, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { def paging_version = "3.5.3" 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.5.3" }
Kotlin
dependencies { val paging_version = "3.5.3" 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.5.3") }
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Przed utworzeniem nowego problemu zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 3.5
Wersja 3.5.3
12 października 2026 r.
Publikacja androidx.paging:paging-*:3.5.3 Wersja 3.5.3 zawiera te zatwierdzenia.
Poprawki błędów
ItemSnapshotListFlownie będzie już zgłaszać błęduIllegalArgumentException, gdyRemoteMediatorosiągnie koniec paginacji w dowolnym kierunku, a nagłówek lub stopka zostanie przekształcony w separator końcowy. (I821c7, b/566336825)- Jeśli liczba wczytanych stron przekroczy
PagingConfig.maxSize, nie zmniejszy się do mniej niż 2 stron, aby zapewnić prawidłowe wypełnienie obszaru widocznego. (I037a0, b/565835910)
External Contribution
Dziękujemy Igorowi za przesłanie poprawki błędu b/565835910.
Wersja 3.5.2
7 października 2026 r.
Publikacja androidx.paging:paging-*:3.5.2 Wersja 3.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Wywołania
Pager.append()przed zakończeniem początkowego odświeżania nie będą już powodować błęduNoSuchElementException. Wywołanie dołączania nie będzie działać. (Ide387, b/556780796)
Wersja 3.5.1
12 sierpnia 2026 r.
Publikacja androidx.paging:paging-*:3.5.1 Wersja 3.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że podczas odświeżania strony z separatorami podczas przewijania do elementów zastępczych
PagingSource.getRefreshKeypodawana była nieprawidłowaanchorPositiono zbyt dużym rozmiarze. (I475f0, b/516565503)
Wersja 3.5.0
6 maja 2026 r.
Publikacja androidx.paging:paging-*:3.5.0 Wersja 3.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.4.0:
Dodano operator
Flow<PagingData>.asItemSnapshotListFlow, aby przekonwertowaćFlow<PagingData>naFlow<ItemSnapshotList>. Oznacza to, że wczytane dane są teraz dostępne poza warstwą interfejsu, co pozwala m.in. na łączenieFlow<ItemSnapshotList>z innymi źródłami danych, lokalne buforowanie i modyfikowanie danych stronicowanych oraz udostępnianie danych stronicowanych jako części stanu interfejsu.Dodano funkcje rozszerzenia
Pager.appendiPager.prepend, aby ręcznie wczytywać więcej danych bez przewijania.Dodano funkcje rozszerzenia
Pager.refreshiPaging.retry, aby umożliwić przywracanie po błędach wczytywania podczas korzystania z interfejsu APIasItemSnapshotListFlow.
Wersja 3.5.0-rc01
22 kwietnia 2026 r.
Publikacja androidx.paging:paging-*:3.5.0-rc01 Wersja 3.5.0-rc01 zawiera te zatwierdzenia.
Bez zmian
- Nie ma żadnych istotnych zmian w porównaniu z wersją
3.5.0-beta01.
Wersja 3.5.0-beta01
8 kwietnia 2026 r.
Publikacja androidx.paging:paging-*:3.5.0-beta01 Wersja 3.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejs API
Flow<PagingData>.asStatezostał zmieniony naFlow<PagingData>.asItemSnapshotListFlow(I0dc11, b/496548025).
Wersja 3.5.0-alpha01
11 marca 2026 r.
Publikacja androidx.paging:paging-*:3.5.0-alpha01 Wersja 3.5.0-alpha01 zawiera te zmiany.
Nowe funkcje
Artefakt
paging-commonzawiera teraz nowy operator przepływuasStatewFlow<PagingData>, który przekształca go wFlow<ItemSnapshotList>. Dzięki temu możesz korzystać z takich funkcji jak:- połączyć przepływ
ItemSnapshotListz innymi źródłami danych, - udostępnianie procesu wielu osobom zbierającym dane bez
cachedIn - lokalne buforowanie danych ze stron
- modyfikować dane stronicowane w pamięci,
- udostępniać dane podzielone na strony w ramach stanu interfejsu,
// In your ViewModel val pager = Pager(pagingConfig, pagingSourceFactory) val pagerFlow = pager.flow.asState() // alterantively convert the flow to a SharedFlow val pagerFlow = pager.flow.asState().stateIn() // In presenter layer val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList) val snapshot = itemsFlow.value LazyColumn { items(items = snapshot.items) { ... } }- połączyć przepływ
Artefakt
paging-commondodał też interfejsy APIPager.appendiPager.prepend, aby ręcznie aktywować wczytywanie na dowolnej krawędzi wczytanych elementów.- W połączeniu z
paging-runtimelubpaging-composeumożliwia wczytywanie większej ilości danych w inny sposób niż przewijanie. - W przypadku użycia z nowym interfejsem API
asStatejest to jedyny sposób na wczytanie większej ilości danych.
LazyColumn { item { /** * Load more items when users scroll near the top of loaded items. */ LaunchedEffect(viewModel) { viewModel.prepend() } } items(snapshot.items) { item -> Text("Item: $item") } item { /** * Load more items when users scroll near the bottom of loaded items. */ LaunchedEffect(viewModel) { viewModel.append() } } }- W połączeniu z
Dodano
Pager.refreshiPager.retry, aby umożliwić przywracanie po błędach wczytywania podczas korzystania z interfejsu APIasState. Więcej przykładów użycia nowych interfejsów API znajdziesz w tym dokumencie. (I1e1e9, If3c87, Idbd48, Id1e1d, I816fe)
Wersja 3.4
Wersja 3.4.2
11 marca 2026 r.
Publikacja androidx.paging:paging-*:3.4.2 Wersja 3.4.2 zawiera te zatwierdzenia.
Bez zmian
- Ta wersja nie zawiera żadnych zmian w interfejsie API ani w zachowaniu w porównaniu z wersją 3.4.1.
Wersja 3.4.1
11 lutego 2026 r.
Publikacja androidx.paging:paging-*:3.4.1 Wersja 3.4.1 zawiera te zatwierdzenia.
Aktualizacja zależności
- Zaktualizowano zależność guava w paging-guava z wersji 31.1 do 32.0.1.
Wersja 3.4.0
28 stycznia 2026 r.
Publikacja androidx.paging:paging-*:3.4.0 Wersja 3.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.3.0:
- Dodano więcej celów KMP do:
paging-common,paging-testingipaging-compose. Wszystkie obsługują teraz JVM(Android i komputery), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) i Web (JavaScript, WasmJS). - W wersjach
paging-common,paging-testingipaging-composeusunięto obsługęmacosX64,iosX64,watchosX64itvosX64, aby dostosować je do wycofania przez Jetbrains elementów docelowych macosX64. - Dodaliśmy nowy
PagingStateinterfejs APIclosestItemAroundPosition, który umożliwia pobieranie wczytanego elementu znajdującego się najbliżej pozycji docelowej i spełniającego warunek wejściowy. Można go używać do generowania kluczy odświeżania opartych na elementach, gdy idealny element do zakotwiczenia znajduje się w pobliżu, ale nie w dokładnej pozycji docelowej.
Wersja 3.4.0-rc01
14 stycznia 2026 r.
Publikacja androidx.paging:paging-*:3.4.0-rc01 Wersja 3.4.0-rc01 zawiera te commity.
Nowe funkcje
- Usunęliśmy obsługę tych platform KMP:
macosX64,iosX64,watchosX64itvosX64, aby dostosować się do wycofania przez Jetbrains elementów docelowych macosX64. (7cb9a4)
Wersja 3.4.0-beta01
17 grudnia 2025 r.
Publikacja androidx.paging:paging-*:3.4.0-beta01 Wersja 3.4.0-beta01 zawiera te zmiany.
Poprawki błędów
- Naprawiono wyścig między wczytywaniem
RecyclerViewiRefresh, który prowadził doIndexOutOfBoundsExceptionwRecyclerView. Przerwane aktualizacje interfejsu z powodu ciągłego wczytywaniaRefreshmogą spowodować rozsynchronizowanie stanu stronicowania zRecyclerView. Problem ten rozwiązuje przywrócenie stanu sprzed odświeżenia w przypadku przerwania odświeżania (np. przez kolejne wczytanieRefresh). (I771b0, b/409809768)
Wersja 3.4.0-alpha04
10 września 2025 r.
Publikacja androidx.paging:paging-*:3.4.0-alpha04 Wersja 3.4.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nowy
PagingStateinterfejs APIclosestItemAroundPosition, który umożliwia pobieranie wczytanego elementu znajdującego się najbliżej pozycji docelowej i spełniającego warunek wejściowy. Można go używać do generowania kluczy odświeżania opartych na elementach, gdy idealny element, który można zakotwiczyć, znajduje się w pobliżu, ale nie w dokładnej pozycji docelowej. (I96e5c, b/440187139)
Wersja 3.4.0-alpha03
27 sierpnia 2025 roku
Publikacja androidx.paging:paging-*:3.4.0-alpha03 Wersja 3.4.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Biblioteka Paging-common dodała komputery jako nowy cel Kotlin Multiplatform (KMP). Obecnie obsługuje JVM(Android i komputery), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) i Web (JavaScript, WasmJS). (Id2483, b/436884811)
- W bibliotece Paging-testing dodano nowe platformy Kotlin Multiplatform (KMP). Obecnie obsługuje JVM(Android i komputery), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) i Web (JavaScript, WasmJS). (I0c543, b/435014650)
- Do biblioteki Paging-compose dodano nowe cele Kotlin Multiplatform (KMP). Obsługuje teraz łącznie JVM(Android i komputery), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) i Web (JavaScript, WasmJS). (I70d44, b/436884801)
Zmiany w interfejsie API
- Przeniesienie domyślnego minSdk z interfejsu API 21 do interfejsu API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Wersja 3.4.0-alpha02
30 lipca 2025 r.
Publikacja androidx.paging:paging-*:3.4.0-alpha02 Wersja 3.4.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
PagingData.fromumożliwia teraz ustawienie wartościplaceholdersBeforeiplaceholdersAfter. Pamiętaj, że przewijanie tych obiektów zastępczych nie powoduje wczytywania. (I06983)
Wersja 3.4.0-alpha01
2 lipca 2025 r.
Publikacja androidx.paging:paging-*:3.4.0-alpha01 Wersja 3.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Do stronicowania dodano te cele KMP: watchos, tvos, mingwX64, watchosDeviceArm64 i linuxArm64. (I237dd, Ia62b3, b/368046982, Icf15d, b/364652024, I139d3, b/338268719)
Poprawki błędów
- Testy jednostkowe na Androidzie, które pobierają stronicowanie w wersji 3.3 lub nowszej, nie będą już zgłaszać błędu z
PagingLogger(Ia9400, b/331684448). - Naprawiono błąd, w wyniku którego funkcja
RecyclerViewzgłaszała wyjątekIndexOutOfBoundsException, gdy użytkownik przewijał ekran podczas aktualizowaniaRecyclerView(Id1f16, b/381024738) - Naprawiliśmy błąd, który powodował, że podczas odświeżania w trakcie przewijania nie można było wywołać kolejnych wczytań. (I60ca5, b/352586078)
- Rozwiązaliśmy problem z awarią podczas przewijania i odświeżania elementów stronicowania. (I8c65a, b/347649763)
Wersja 3.3
Wersja 3.3.6
12 lutego 2025 r.
Publikacja androidx.paging:paging-*:3.3.6 Wersja 3.3.6 zawiera te zatwierdzenia.
Poprawki błędów
- Sygnały odświeżania i ponawiania wysyłane podczas początkowego odświeżania będą teraz przechowywane i automatycznie ponownie wysyłane, gdy prezenter stronicowania będzie gotowy.
Wkład zewnętrzny
Wersja 3.3.5
11 grudnia 2024 r.
Publikacja androidx.paging:paging-*:3.3.5 Wersja 3.3.5 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd, w którym
RecyclerViewzgłaszaIndexOutOfBoundsException, gdy użytkownik przewija podczas aktualizowaniaRecyclerView. (Id1f16, b/381024738)
Wersja 3.3.4
13 listopada 2024 r.
Publikacja androidx.paging:paging-*:3.3.4 Wersja 3.3.4 zawiera te zmiany.
Poprawki błędów
- Testy jednostkowe na Androidzie, które korzystają z Paging 3.3 lub nowszej wersji, nie będą już zgłaszać błędu takiego jak
Method isLoggable in android.util.Log not mocked. (Ia9400, b/331684448)
Wersja 3.3.2
7 sierpnia 2024 r.
Publikacja androidx.paging:paging-*:3.3.2 Wersja 3.3.2 zawiera te zmiany.
Nowe funkcje
paging-commonipaging-testingdodano nowe platformy Kotlin Multiplatform:watchos,tvosilinuxArm64(90c9768), (53e0eca)
Wersja 3.3.1
24 lipca 2024 r.
Publikacja androidx.paging:paging-*:3.3.1 Wersja 3.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że interfejs
AsyncPagingDataDifferlub interfejsy API utworzone na jego podstawie, takie jakPagingDataAdapterużywany zRecyclerView, nie mogły wywoływać kolejnych wczytań, gdy źródło danych było odświeżane podczas przewijania. (I60ca5, b/352586078) - Naprawiono błąd powodujący awarię podczas usuwania elementów ze źródła danych podczas przewijania elementu
RecyclerViewza pomocą elementuPagingDataAdapterlubAsyncPagingDataDiffer. (I8c65a, b/347649763)
Wersja 3.3.0
14 maja 2024 r.
Publikacja androidx.paging:paging-*:3.3.0 Wersja 3.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.2.0
- Zajęcia
PagingDataPresentersą teraz publiczne. Prezentery wieloplatformowe można teraz tworzyć na podstawiePagingDataPresenter, zamiast wymagać wewnętrznych interfejsów API stronicowania lubAsyncPagingDataDifferwpaging-runtime. - Dodaliśmy nowe metody pomocnicze
LoadStatesiCombinedLoadStateswhasErroriisIdle, aby sprawdzać, czyLoadStatesjest w stanie błędu lubNotLoading. Dodaliśmy też nową metodę rozszerzenia KotlinawaitNotLoading()wFlow<CombinedLoadStates>, która czeka, aż wczytywanie zakończy się stanemNotLoadinglub stanem błędu. PagingData.empty()domyślnie wysyła teraz stanyNotLoading, chyba że do konstruktora przekazano niestandardoweLoadStates. Różni się to od dotychczasowego zachowania, w którym nie wysyłaLoadStates, gdy jest przesyłany doPagingDataAdapter, lub wysyła stany wczytywania, gdy jest zbierany jakoLazyPagingItems. Gdy jest zbierana jakoLazyPagingItems, od razu po początkowym utworzeniu będzie wyświetlać pustą listę.
Zgodność z Kotlin Multiplatform
Biblioteka Paging zawiera teraz artefakty zgodne z Kotlin Multiplatform, w dużej mierze dzięki pracy nad projektem multiplatform-paging w CashApp.
- W wersji
paging-commonwszystkie interfejsy API Paging 3 zostały przeniesione docommoni są teraz zgodne z JVM i iOS, a nie tylko z Androidem. - Biblioteka
paging-testingzostała przeniesiona docommoni jest teraz zgodna z JVM i iOS, a nie tylko z Androidem. - Kod biblioteki
paging-composezostał przeniesiony docommoni jest dostarczany jako artefakt Androida, co odpowiada obsłudze wielu platform przezandroidx.compose. paging-runtime,paging-guava,paging-rxjava2ipaging-rxjava3będą nadal dostępne tylko na Androidzie.
Wersja 3.3.0-rc01
1 maja 2024 r.
Wersja androidx.paging:paging-*:3.3.0-rc01 została opublikowana bez zmian w stosunku do wersji Paging 3.3.0-beta01. Wersja 3.3.0-rc01 zawiera te zatwierdzenia.
Wersja 3.3.0-beta01
3 kwietnia 2024 r.
androidx.paging:paging-*:3.3.0-beta01 zostaje opublikowana bez znaczących zmian. Wersja 3.3.0-beta01 zawiera te zatwierdzenia.
Wersja 3.3.0-alpha05
20 marca 2024 r.
Publikacja androidx.paging:paging-*:3.3.0-alpha05 Wersja 3.3.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Biblioteka Paging używa teraz adnotacji AndroidX Annotation
@MainThreadw przypadku wspólnego kodu. (I78f0d, b/327682438)
Wersja 3.3.0-alpha04
6 marca 2024 roku
Publikacja androidx.paging:paging-*:3.3.0-alpha04 Wersja 3.3.0-alpha04 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy drobne błędy w dokumentacji związane z dodaniem zgodności z Kotlin Multiplatform. (aosp/2950785)
Wersja 3.3.0-alpha03
7 lutego 2024 r.
Publikacja androidx.paging:paging-*:3.3.0-alpha03 Wersja 3.3.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
PagingDataPresenterto teraz zajęcia publiczne. Prezentery wieloplatformowe można teraz tworzyć na podstawiePagingDataPresenter, zamiast wymagać wewnętrznych interfejsów API stronicowania lubAsyncPagingDataDifferpaging-runtime. (Id1f74, b/315214786)- Dodaliśmy nowe metody pomocnicze
LoadStatesiCombinedLoadStates, aby sprawdzać, czyLoadStatesjest w stanie błędu lubNotLoading. Dodaliśmy też nowy interfejs API, który czeka naLoadStateFlow, aż wczytywanie zostanie zakończone i nastąpi przejście do stanuNotLoadinglub stanu błędu. (Id6c67)
Zmiana zachowania
PagingData.empty()domyślnie wysyła teraz stanyNotLoading, chyba że do konstruktora przekazano niestandardoweLoadStates. Jest to zmiana w stosunku do dotychczasowego działania, w którym nie wysyłaLoadStates, gdy jest przesyłany doPagingDataAdapter, lub wysyła stany wczytywania, gdy jest zbierany jakoLazyPagingItems. Gdy jest zbierany jakoLazyPagingItems, od razu po początkowym utworzeniu wyświetla też pustą listę. (I4d11d, b/301833847)
Wersja 3.3.0-alpha02
20 września 2023 r.
Publikacja androidx.paging:paging-*:3.3.0-alpha02 Wersja 3.3.0-alpha02 zawiera te zatwierdzenia.
Zgodność z Kotlin Multiplatform
Paging zawiera teraz artefakty zgodne z Kotlin Multiplatform, głównie dzięki pracy nad projektem multiplatform-paging firmy CashApp. Pozwoli nam to uniknąć rozbieżności między dwoma repozytoriami i zachować ich zgodność.
- W wersji
paging-commonwszystkie interfejsy API Paging 3 zostały przeniesione docommoni są teraz zgodne z JVM i iOS, a nie tylko z Androidem. - Biblioteka
paging-testingzostała przeniesiona docommoni jest teraz zgodna z JVM i iOS, a nie tylko z Androidem. - Kod biblioteki
paging-composezostał przeniesiony docommoni jest dostarczany jako artefakt Androida, co odpowiada obsłudze wielu platform przezandroidx.compose. paging-runtime,paging-guava,paging-rxjava2ipaging-rxjava3będą nadal dostępne tylko na Androidzie.
Zmiany w interfejsie API
- Publiczny interfejs Logger, który był przeznaczony tylko do użytku wewnętrznego, został wycofany (I16e95, b/288623117).
Zewnętrzny wkład
- Dziękujemy veyndanowi z Cash App za pomoc w przeniesieniu biblioteki Paging na platformę Kotlin Multiplatform (#560, #561, #562, #573, #576, #577, #578, #579, #580, #581, #583, #584, #586, #609).
Wersja 3.3.0-alpha01
20 września 2023 r.
- To pierwsza wieloplatformowa wersja bibliotek androidx.paging. Ta wersja zawiera tylko artefakty
*-jvmi*-android. W przypadku systemów macOS, iOS i Linux użyj znaku3.3.0-alpha02.
Wersja 3.2
Wersja 3.2.1
6 września 2023 r.
Publikacja androidx.paging:paging-*:3.2.1 Wersja 3.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował zawieszanie się interfejsu
asSnapshot()API artefaktu testowania stronicowania po przekazaniu do niego obiektu Flow utworzonego za pomocą funkcjiPagingData.from(List), ponieważasSnapshot()nie miał informacji o zakończeniu wczytywania (w przeciwieństwie do przeciążeniaPagingData.from(List, LoadStates)). To obejście działa tylko w przypadku przepływów, które można ukończyć (np.flowOf(PagingData.from(...))). W przypadku przepływów, których nie można ukończyć (np.MutableStateFlow), użyj przeciążeniaPagingData.from, które zapewniaLoadStates. (I502c3) - Paging Compose używa teraz wewnętrznie
AndroidUiDispatcher.Main, aby nowe dane były dostępne w tej samej klatce, w której kończy się wczytywanie. (Ia55af)
Wersja 3.2.0
26 lipca 2023 r.
Publikacja androidx.paging:paging-*:3.2.0 Wersja 3.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.1.0
- Biblioteka Paging Compose osiągnęła stabilność interfejsu API i została ponownie scalona z pozostałą częścią biblioteki Paging, w której jej wersja jest teraz zgodna ze wszystkimi innymi artefaktami Paging. Zmiany od wersji 3.1.0:
- Obsługa podglądu listy danych testowych przez utworzenie
PagingData.from(fakeData)i umieszczenie goPagingDatawMutableStateFlow(np.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). Przekaż ten przepływ do funkcji kompozycyjnych@Previewjako odbiorcęcollectAsLazyPagingItems(), aby wyświetlić podgląd. - Obsługa wszystkich układów leniwych, takich jak
LazyVerticalGridiHorizontalPager, a także niestandardowych komponentów leniwych z bibliotek Wear i TV. Udało się to osiągnąć dzięki nowym metodom rozszerzenia niższego poziomuLazyPagingItemsiitemKey, które pomagają wdrożyć parametryitemContentTypeikeyw standardowych interfejsach APIcontentType, które już istnieją w przypadkuitems,LazyColumnoraz ich odpowiedników w interfejsach API takich jakLazyVerticalGridHorizontalPager. - Atrybuty
items(lazyPagingItems)iitemsIndexed(lazyPagingItems), które obsługują tylkoLazyListScope, zostały wycofane.
- Obsługa podglądu listy danych testowych przez utworzenie
- Nowy artefakt
paging-testing, który udostępnia interfejsy API zaprojektowane pod kątem testów jednostkowych każdej warstwy aplikacji i jej integracji z Pagingiem w izolacji. Obejmuje na przykład:TestPager, która umożliwia sprawdzanie działania własnej implementacjiPagingSourceniezależnie od komponentu Pager i rzeczywistego interfejsu.- Interfejsy API
asPagingSourceFactorydo przekształcaniaFlow<List<Value>>lub statycznegoList<Value>wPagingSourceFactory, który można przekazać do pagera w testach asSnapshotRozszerzenie Kotlin naFlow<PagingData<Value>>, które tłumaczyFlow<PagingData<Value>>na bezpośredniList<Value>.asSnapshot lambdaumożliwia naśladowanie interfejsu aplikacji za pomocą interfejsów API, takich jakscrollTolubappendScrollWhile, dzięki czemu możesz sprawdzić, czy zrzut danych jest prawidłowy w dowolnym momencie w zestawie danych podzielonych na strony.
- Dodano domyślne logi, aby udostępniać informacje na potrzeby debugowania stronicowania na 2 poziomach:
VERBOSEiDEBUG. Dzienniki można włączyć za pomocą poleceniaadb shell setprop log.tag.Paging [DEBUG|VERBOSE]. Dotyczy to zarówno stronicowania z widokami, jak i stronicowania z Compose. - Dodano konstruktory dla
PagingDataAdapteriAsyncPagingDataDiffer, które akceptująCoroutineContextzamiastCoroutineDispatcher. - Dodaliśmy nowy interfejs funkcjonalny
PagingSourceFactory, który zapewnia bardziej przejrzystą powierzchnię interfejsu API niż poprzednie wyrażenia lambda () ->PagingSource. Za pomocą tej fabryki można tworzyć instancje klasy Pager.
Wersja 3.2.0-rc01
21 czerwca 2023 r.
Publikacja androidx.paging:paging-*:3.2.0-rc01 Wersja 3.2.0-rc01 zawiera te zatwierdzenia.
Wkład zewnętrzny
- Dziękujemy użytkownikowi Veyndan za wkład w uniezależnienie stronicowania od specyfiki Androida/JVM. (#553, #554, #555, #559)
Wersja 3.2.0-beta01
7 czerwca 2023 r.
Publikacja androidx.paging:paging-*:3.2.0-beta01 Wersja 3.2.0-beta01 zawiera te zatwierdzenia.
Paging Compose
- Interfejs API Paging Compose osiągnął oficjalnie stabilność. W związku z tym wersja została zaktualizowana z
1.0.0-alpha20, aby odpowiadała wersji wszystkich innych artefaktów Paging.
Zmiany w interfejsie API
- Usunięto wycofane interfejsy API
items(LazyPagingItems)iitemsIndexed(LazyPagingItems)z biblioteki Paging Compose. Przykłady interfejsów API, które je zastępują, znajdziesz w informacjach o wersji Paging Compose1.0.0-alpha20. (I9626e)
Wersja 3.2.0-alpha06
24 maja 2023 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha06 Wersja 3.2.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy nowy interfejs funkcjonalny
PagingSourceFactory, który zapewnia bardziej przejrzysty interfejs API niż dotychczasowe wyrażenia lambda() -> PagingSource. Za pomocą tej fabryki można utworzyć instancję klasyPager. (I33165, b/280655188) - Dodano nowy interfejs API
paging-testingwList<Value>.asPagingSourceFactory(), aby uzyskaćPagingSourceFactory, który wczytuje się tylko z niezmiennej listy danych. Istniejące rozszerzenie na stronieFlow<List<Value>>powinno być nadal używane do testowania z wieloma generacjami danych statycznych. (Id34d1, b/280655188)
Zmiany w interfejsie API
- Wszystkie publiczne interfejsy API w paging-testing są teraz oznaczone adnotacją
@VisibleForTesting, aby mieć pewność, że są używane tylko w testach. (I7db6e) - Interfejs
asSnapshotAPI nie wymaga już przekazywaniaCoroutineScope. Teraz domyślnie używa kontekstu odziedziczonego z zakresu nadrzędnego. (Id0a78, b/282240990) - Zmieniono kolejność parametrów konstruktora
TestPager, aby intuicyjnie odpowiadała kolejności parametrów konstruktoraPager(I6185a). - Zmieniono użycie typu lambda
() -> PagingSource<Key, Value>w paging-testing na typPagingSourceFactory<Key, Value>. (I4a950, b/280655188)
Zmiany w zachowaniu
- Do uruchamiania testów stronicowania
asSnapshotnie jest już wymagany główny dyspozytor. Ustawienie tej opcji nie powoduje już żadnych zmian w działaniu testu. (Ie56ea)
Wersja 3.2.0-alpha05
3 maja 2023 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha05 Wersja 3.2.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejs Paging Testing API w bibliotece
asSnapshotdomyślnie ustawia teraz parametrloadOperationsna pustą funkcję lambda. Umożliwia to wywoływanie funkcjiasSnapshotbez przekazywania żadnych operacji wczytywania w celu pobrania danych z początkowego wczytywania odświeżania. (Ied354, b/277233770)
Ulepszenia dokumentacji
- Zaktualizowaliśmy dokumentację dotyczącą
asPagingSourceFactory(), aby wyjaśnić, że jest to metoda rozszerzenia wFlow, która zwraca fabrykę wielokrotnego użytku do generowania instancjiPagingSource. (I5ff4f, I705b5) - Zaktualizowaliśmy dokumentację konstruktora
LoadResult.Page, aby wyjaśnić, że w celu obsługi skakania należy zastąpić funkcjeitemsBeforeiitemsAfter. (Ied354)
Treści zewnętrzne
- Dziękujemy Veyndanowi za pomoc w odchodzeniu od specyfiki Androida i JVM w przypadku biblioteki Paging. (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493)
Wersja 3.2.0-alpha04
8 lutego 2023 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha04 Wersja 3.2.0-alpha04 zawiera te zatwierdzenia.
Testowanie stronicowania
- Artefakt
paging-testingzawiera teraz metodęasPagingSourceFactorydo tworzeniapagingSourceFactoryzFlow<List<Value>>, który ma być dostarczany do pagera. Każdy elementList<Value>>wyemitowany z Flow reprezentuje generację danych podzielonych na strony. Ułatwia to testowanie stronicowania, np. przekształceńPagingData, przez sfałszowanie źródła danych, z którego Pager ma zbierać dane. (I6f230, b/235528239) paging-testingzostał rozszerzony o nowe interfejsy API, które umożliwiają weryfikację poprawności danych zawartych wFlow<PagingData<T>>. Można go używać np. do potwierdzania danych wyjściowychFlow<PagingData<T>>z warstwy ViewModel.Odbywa się to za pomocą
asSnapshotrozszerzenia Kotlin wFlow<PagingData<Value>>, które przekształcaFlow<PagingData<Value>>w bezpośredniList<Value>. FunkcjaasSnapshotlambda umożliwia naśladowanie interfejsu aplikacji za pomocą interfejsów API, takich jakscrollTolubappendScrollWhile, w powtarzalny i spójny sposób, dzięki czemu możesz w dowolnym momencie sprawdzić, czy migawka danych jest prawidłowa w zbiorze danych podzielonych na strony.// 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 valuesasSnapshotto metodasuspend, która powinna być uruchamiana w ramachrunTest. Więcej informacji znajdziesz w artykule Testowanie współprogramów Kotlin na Androidzie. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic1238, I96def, b/235528239)
Zmiany w interfejsie API
- Wywołania interfejsu do
getItemipeekwAsyncPagingDataDifferiPagingDataAdaptersą teraz prawidłowo oznaczone jako możliwe do wywołania tylko w wątku głównym. (I699b6) - Usunięto symbole wieloznaczne z typów ogólnych używanych przez
TestPager, co ułatwia korzystanie z wyników tych metod w kodzie napisanym w języku programowania Java. (I56c42)
Wersja 3.2.0-alpha03
24 października 2022 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha03 Wersja 3.2.0-alpha03 zawiera te zatwierdzenia.
Testowanie stronicowania
Ta wersja zawiera nowy artefakt: paging-testing. Ten artefakt udostępnia interfejsy API zaprojektowane pod kątem testów jednostkowych każdej warstwy aplikacji i jej integracji z funkcją stronicowania w izolacji.
Na przykład ta pierwsza wersja zawiera klasę TestPager, która umożliwia weryfikowanie działania własnej implementacji niestandardowej PagingSource niezależnie od Pager i rzeczywistego interfejsu, którego zwykle używasz do symulowania kompleksowej integracji stronicowania.
TestPager należy traktować jako fałszywy – dubler testowy, który odzwierciedla rzeczywistą implementację Pager, zapewniając jednocześnie uproszczoną powierzchnię interfejsu API do testowania PagingSource. Te interfejsy API to interfejsy API suspend i powinny być uruchamiane w runTest zgodnie z opisem w przewodniku Testowanie współprogramów Kotlin na Androidzie.
Przykład użycia tych interfejsów API można znaleźć w testach room-paging, które zostały poddane refaktoryzacji, aby używały TestPager.
Zmiany w interfejsie API
- Umożliwia wygodne iterowanie po zakresie
LoadResult.Page.data–LoadResult.Page.iterator(). Umożliwia to pośrednio użycie metody biblioteki standardowej Kotlinflattenw przypadku podaniaList<LoadResult.Page>, np. za pomocą właściwościpageselementuPagingState, która jest przekazywana do metodyPagingSource.getRefreshKey. (Ie0718)
Wersja 3.2.0-alpha02
10 sierpnia 2022 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha02 Wersja 3.2.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Paging udostępnia teraz logi za pomocą klas
AsyncPagingDataDifferlubPagingDataAdapter, aby ujawniać informacje na potrzeby debugowania zebrane zPagingData. - Logi można włączyć za pomocą polecenia
adb shelladb shell setprop log.tag.Paging [DEBUG|VERBOSE].(b/235527159).
Poprawki błędów
- Naprawiono błąd braku konstruktora
PagingDataDifferpodczas używaniapaging-common:3.2.0-alpha01z wersją środowiska wykonawczegopaging-runtime:3.1.1lub starszą.(b/235256201)
Wersja 3.2.0-alpha01
1 czerwca 2022 r.
Publikacja androidx.paging:paging-*:3.2.0-alpha01 Wersja 3.2.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano konstruktory dla klas
PagingDataAdapteriAsyncPagingDataDiffer, które akceptują typCoroutineContextzamiastCoroutineDispatcher. (Idc878) - Domyślnie zasady
PagingData.from()iPagingData.empty()nie mają już wpływu naCombinedLoadStatespo stronie prezentera. Dodaliśmy nowe przeciążenie, które umożliwia przekazywanie wartościsourceLoadStatesiremoteLoadStatesdo tych konstruktorów, aby zachować dotychczasowe działanie polegające na ustawianiu wartościLoadStatesjako w pełni końcowej (tzn.NotLoading(endOfPaginationReached = false)), z opcją uwzględnienia w razie potrzeby również stanów zdalnych. Jeśli parametryLoadStatesnie zostaną przekazane, po stronie prezentera zostanie zachowana poprzednia wartośćCombinedLoadStates, gdy otrzyma on statyczny parametrPagingData. (Ic3ce5, b/205344028)
Poprawki błędów
- Wynik funkcji
PagingSource.getRefreshKey()jest teraz prawidłowo traktowany priorytetowo w stosunku do funkcjiinitialKeyw przypadkach, gdy zwraca wartość null, ale ustawiono wartość inną niż null dla funkcjiinitialKey. (Ic9542, b/230391606)
Zewnętrzny wkład
- Zaktualizowano interfejs API :compose:ui:ui-test (updateApi) z powodu migracji biblioteki test-coroutines-lib (I3366d)
Wersja 3.1
Wersja 3.1.1
9 marca 2022 r.
Publikacja androidx.paging:paging-*:3.1.1 Wersja 3.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto pośrednie zdarzenia
LoadState.NotLoadingmiędzy generacjami, które zostały nieprawidłowo wstawione przez.cachedIn(). Ta zmiana znacznie ułatwia reagowanie na zmianyLoadState, ponieważ usuwa zbędne zdarzeniaLoadState.NotLoading, które były generowane między ponownymi próbami nieudanych wczytań, podczas odświeżania lub unieważniania.
Wersja 3.1.0
17 listopada 2021 r.
Publikacja androidx.paging:paging-*:3.1.0 Wersja 3.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.0.0
- Interfejsy API
Flow<PagingData>.observableiFlow<PagingData>.flowablenie są już eksperymentalne - Zmiany w
LoadState:endOfPaginationReachedto teraz zawszefalsezaLoadType.REFRESHza obie subskrypcjePagingSourceiRemoteMediatorLoadStatesz Paging oczekuje teraz na prawidłowe wartości zPagingSourceiRemoteMediator, zanim wyemituje je dalej. Nowe generacjePagingDatabędą teraz zawsze prawidłowo zaczynać się odLoadingw przypadku stanu odświeżania, zamiast w niektórych przypadkach nieprawidłowo resetować się doNotLoading..loadStateFlowi.addLoadStateListenerw interfejsach API prezenterów nie wysyłają już niepotrzebnie początkowego elementuCombinedLoadStates, który zawsze ma stany mediatora ustawione nanull
- Anulowanie poprzednich generacji następuje teraz natychmiast po unieważnieniu lub rozpoczęciu nowych generacji. Nie powinno być już konieczne używanie
.collectLatestnaFlow<PagingData>, chociaż nadal jest to zalecane. PagingSource.LoadResult.Invalidzostał dodany jako nowy typ zwracany zPagingSource.load, co powoduje, że biblioteka Paging odrzuca wszystkie oczekujące lub przyszłe żądania wczytania do tegoPagingSourcei unieważnia go. Ten zwracany typ jest przeznaczony do obsługi potencjalnie nieprawidłowych lub nieaktualnych danych, które mogą zostać zwrócone z bazy danych lub sieci.- Dodano interfejsy API prowadzących
.onPagesPresentedi.addOnPagesUpdatedListener, które są wywoływane synchronicznie podczas wyświetlania stron w interfejsie. Aktualizacje strony mogą wystąpić w tych sytuacjach:- Początkowe wczytywanie nowej generacji PagingData zostało zakończone, niezależnie od tego, czy nowa generacja zawiera jakiekolwiek zmiany w prezentowanych elementach. Nowa generacja, która kończy wczytywanie początkowe bez aktualizacji, ponieważ lista jest dokładnie taka sama, nadal będzie wywoływać to wywołanie zwrotne.
- Strona zostanie wstawiona, nawet jeśli nie zawiera żadnych nowych elementów.
- Strona zostanie usunięta, nawet jeśli była pusta.
Wersja 3.1.0-rc01
3 listopada 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-rc01 Wersja 3.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono sytuację wyścigu i wyciek pamięci w metodzie .cachedIn() w przypadkach, gdy wiele zdarzeń wczytywania zostało wysłanych przez Paging z serwera do klienta, gdy nie ma obserwatorów lub gdy obserwator przełącza się na nowe dane Paging. (Ib682e)
Wersja 3.1.0-beta01
13 października 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-beta01 Wersja 3.1.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, w którym wiele szybkich dostępów do elementów mogło powodować ich pomijanie w przypadku parametru prefetchDistance, co powodowało wstrzymanie wczytywania stron. Jest to szczególnie problematyczne, gdy wiele elementów jest ułożonych jednocześnie w kolejności, która priorytetowo traktuje ładowanie w kierunku przeciwnym do przewijania przez użytkownika. Dostęp do tych elementów jest teraz buforowany i priorytetyzowany synchronicznie, aby zapobiec ich utracie. (aosp/1833273)
Wersja 3.1.0-alpha04
29 września 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-alpha04 Wersja 3.1.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy API
Flow<PagingData>.observableiFlow<PagingData>.flowablenie są już eksperymentalne. (Ie0bdd)
Poprawki błędów
- W przypadku LoadStates wartość
endOfPaginationReachedjest teraz zawsze równafalsew przypadkuLoadType.REFRESH. Wcześniej parametr endOfPaginationReached mógł mieć wartośćtruew przypadku RemoteMediatorREFRESH, ale nie w przypadku PagingSource. Teraz zawsze zwracany jest stanfalse, ponieważ REFRESH nigdy nie powinien być stanem końcowym. Jest to teraz udokumentowane w ramach umowy API w LoadStates. Decydując o zakończeniu paginacji, zawsze rób to w odniesieniu do kierunków APPEND lub PREPEND. (I047b6) Obiekty LoadStates z biblioteki Paging czekają teraz na prawidłowe wartości z obiektów PagingSource i RemoteMediator, zanim wyemitują dane do dalszego przetwarzania między generacjami. Zapobiega to wysyłaniu przez nowe generacje PagingData stanu NotLoading w CombinedLoadStates.source.refresh, jeśli był już stan Loading. Nowe generacje PagingData będą teraz zawsze prawidłowo zaczynać od stanu Loading w przypadku stanu odświeżania, zamiast w niektórych przypadkach nieprawidłowo resetować się do stanu NotLoading.
Anulowanie poprzednich generacji następuje teraz natychmiast po unieważnieniu lub wygenerowaniu nowych. Nie powinno być już konieczne używanie .collectLatest w
Flow<PagingData>, chociaż nadal jest to zdecydowanie zalecane. (I0b2b5, b/177351336, b/195028524)Interfejsy API
.loadStateFlowi.addLoadStateListenerw prezenterze nie wysyłają już niepotrzebnie początkowego stanuCombinedLoadStates, który zawsze ma stany mediatora ustawione nanull, a stany źródła naNotLoading(endOfPaginationReached = false). Oznacza to, że:- stany mediatora będą zawsze wypełniane, jeśli używasz RemoteMediator.
- Zarejestrowanie nowego detektora loadState lub nowego kolektora w
.loadStateFlownie będzie już powodować natychmiastowego wyemitowania bieżącej wartości, jeśli nie otrzyma on rzeczywistego elementuCombinedLoadStateszPagingData. Może się tak zdarzyć, jeśli moduł zbierający lub detektor uruchomi się przed przesłaniem elementuPagingData. (I1a748)
Wersja 3.1.0-alpha03
21 lipca 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-alpha03 Wersja 3.1.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Do PagingSource dodano trzeci zwracany typ LoadResult, LoadResult.Invalid. Gdy PagingSource.load zwraca LoadResult.Invalid, stronicowanie odrzuca wczytane dane i unieważnia PagingSource. Ten zwracany typ jest przeznaczony do obsługi potencjalnie nieprawidłowych lub nieaktualnych danych, które mogą zostać zwrócone z bazy danych lub sieci.
Jeśli na przykład dane w bazie danych zostaną zmienione, ale obiekt PagingSource nie zostanie w odpowiednim czasie unieważniony, może zwrócić niespójne wyniki, jeśli jego implementacja zależy od niezmienności zbioru danych, z którego pobiera dane (np. implementacje bazy danych w stylu LIMIT OFFSET). W takim przypadku zalecamy sprawdzenie unieważnienia po wczytaniu i zwrócenie wartości LoadResult.Invalid, co spowoduje, że Paging odrzuci wszystkie oczekujące lub przyszłe żądania wczytania do tego źródła PagingSource i unieważni je.
Ten typ zwracanych danych jest też obsługiwany przez interfejs Paging2 API, który korzysta z LivePagedList lub RxPagedList. Jeśli używasz PagingSource z interfejsami PagedList API biblioteki Paging2, PagedList jest natychmiast odłączana, co powoduje zatrzymanie dalszych prób wczytania danych do tej listy PagedList i wywołuje unieważnienie w PagingSource.
LoadResult to klasa zapieczętowana, co oznacza, że jest to zmiana niezgodna ze źródłem, więc przypadki użycia, które bezpośrednio korzystają z wyników PagingSource.load, będą musiały obsługiwać LoadResult.Invalid w czasie kompilowania. Na przykład użytkownicy Kotlina, którzy używają instrukcji exhaustive-when do sprawdzania zwracanego typu, będą musieli dodać sprawdzenie nieprawidłowego typu. (Id6bd3, b/191806126, b/192013267)
Poprawki błędów
- Wywołania zwrotne unieważnienia dodane za pomocą funkcji PagingSource.registerInvalidatedCallback lub DataSource.addInvalidatedCallback są teraz automatycznie wywoływane, jeśli zostały zarejestrowane w obiekcie PagingSource lub DataSource, który był już nieprawidłowy. Rozwiązuje to sytuację wyścigu, który powodował, że biblioteka Paging odrzucała sygnały unieważnienia i zawieszała się, gdy otrzymała obiekt Source, który był już nieprawidłowy podczas początkowego wczytywania. Dodatkowo wywołania zwrotne unieważnienia są teraz prawidłowo usuwane po wywołaniu, ponieważ gwarantujemy, że zostaną wywołane co najwyżej raz. (I27e69)
- Przesłanie początkowej wartości obiektu zastępczego (InitialPagedList) z nowo utworzonego strumienia PagedList, np. LivePagedListBuilder lub RxPagedListBuilder, nie będzie już powodować czyszczenia wcześniej wczytanych danych.
Wersja 3.1.0-alpha02
1 lipca 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-alpha02 Wersja 3.1.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
Dodano interfejsy API detektora onPagesPresented i prezentera przepływu, które są aktywowane natychmiast po zaktualizowaniu prezentowanych stron w interfejsie.
Te aktualizacje są synchroniczne z interfejsem, więc możesz wywoływać metody adaptera, takie jak .snapshot czy .getItemCount, aby sprawdzić stan po zastosowaniu aktualizacji. Pamiętaj, że metoda .snapshot() została pozostawiona do wywołania jawnego, ponieważ może być kosztowna przy każdej aktualizacji.
Aktualizacje strony mogą wystąpić w tych sytuacjach:
- Początkowe wczytywanie nowej generacji PagingData zostało zakończone, niezależnie od tego, czy nowa generacja zawiera jakiekolwiek zmiany w prezentowanych elementach. Nowa generacja, która kończy wczytywanie początkowe bez aktualizacji, ponieważ lista jest dokładnie taka sama, nadal wywoła tę funkcję.
- Strona jest wstawiana nawet wtedy, gdy nie zawiera nowych elementów.
- Strona jest upuszczana, nawet jeśli była pusta (I272c9, b/189999634).
Poprawki błędów
- Uzyskanie dostępu do PagedList.dataSource z początkowej wartości wygenerowanej przez LivePagedList lub RxPagedList nie będzie już nieprawidłowo powodować błędu IllegalStateException (I96707).
Wersja 3.1.0-alpha01
2 czerwca 2021 r.
Publikacja androidx.paging:paging-*:3.1.0-alpha01 Wersja 3.1.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Klasy dostarczane przez
paging-rxjava3znajdują się teraz w pakiecieandroidx.paging.rxjava3, dzięki czemu nie kolidują zpaging-rxjava2(Ifa7f6).
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że stronicowanie czasami wysyłało do RecyclerView zdarzenia różnicowe bez operacji, co mogło powodować przedwczesne uruchamianie niektórych detektorów. (Ic507f, b/182510751)
Wkład zewnętrzny
- Dodano do artefaktu rxjava3 wycofane interfejsy API PagedList (Id1ce2, b/182497591)
Paging Compose w wersji 1.0.0
Wersja 1.0.0-alpha20
24 maja 2023 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha20 Wersja 1.0.0-alpha20 zawiera te zatwierdzenia.
Nowe funkcje
- Paging Compose obsługuje teraz podgląd listy fałszywych danych przez utworzenie
PagingData.from(fakeData)i opakowanie tegoPagingDatawMutableStateFlow(np.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))). Jeśli użyjesz tych danych jako danych wejściowych dla@Preview, wywołaniacollectAsLazyPagingItems()będą dostarczaćLazyPagingItemsz możliwością podglądu. (I8a78d, b/194544557)
Poprawki błędów
- Dane z aplikacji
pager.flow.cachedInzapisane w pamięci podręcznej, które zostały zebrane wLazyPagingItems, będą teraz natychmiast dostępne po przywróceniu stanu bez konieczności asynchronicznego zbierania. Oznacza to, że dane z pamięci podręcznej będą gotowe do prezentacji natychmiast po początkowej kompozycji po przywróceniu stanu. (I97a60, b/177245496)
Wersja 1.0.0-alpha19
3 maja 2023 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha19 Wersja 1.0.0-alpha19 zawiera te zmiany.
Obsługa wszystkich układów Lazy
Wcześniej biblioteka Paging Compose udostępniała niestandardowe rozszerzenia items i itemsIndexed w LazyListScope, co oznaczało, że nie można było jej używać z innymi układami ładowanymi z opóźnieniem, takimi jak LazyVerticalGrid, HorizontalPager czy inne niestandardowe komponenty ładowane z opóźnieniem udostępniane przez biblioteki Wear i TV. Główną zmianą w tej wersji jest rozwiązanie tego problemu.
Aby obsługiwać więcej układów leniwych, musieliśmy utworzyć interfejsy API na innej warstwie. Zamiast udostępniać niestandardowy interfejs API items dla każdego układu leniwego, Paging Compose udostępnia teraz metody rozszerzające niższego poziomu w LazyPagingItems w itemKey i itemContentType. Te interfejsy API pomagają wdrażać parametry key i contentType w standardowych interfejsach API items, które są już dostępne w przypadku LazyColumn i LazyVerticalGrid, a także ich odpowiedników w interfejsach API, takich jak HorizontalPager. (Ifa13b, Ib04f0, b/259385813)
Oznacza to, że obsługa LazyVerticalGrid wyglądałaby tak:
// 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)
}
}
Więcej przykładów użycia tych nowych interfejsów API znajdziesz w naszych przykładach.
Chociaż te zmiany wydłużają przykłady LazyColumn i LazyRow o kilka wierszy, uznaliśmy, że spójność wszystkich układów ładowanych z opóźnieniem jest ważnym czynnikiem dla osób, które w przyszłości będą korzystać z Paging Compose. Z tego powodu dotychczasowe rozszerzenia LazyListScope zostały wycofane. (I0c459, I92c8f, b/276989796)
Zmiany w interfejsie API
- Aby ułatwić migrację do nowych interfejsów API, funkcje rozszerzeń
itemsiitemsIndexedwLazyListScopeobsługują teraz parametrcontentType, co odzwierciedla obsługę w nowych interfejsach API. (Ib1918, b/255283378)
Aktualizacje zależności
- Paging Compose zaktualizował zależność z Compose 1.0.5 do Compose 1.2.1. (Ib1918, b/255283378)
Wersja 1.0.0-alpha18
8 lutego 2023 r.
Wersja androidx.paging:paging-compose:1.0.0-alpha18 została opublikowana bez zmian. Wersja 1.0.0-alpha18 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha17
24 października 2022 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha17 Wersja 1.0.0-alpha17 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę niestandardowego parametru
CoroutineContextpodczas wywoływania funkcjicollectLazyPagingItems. (I7a574, b/243182795, b/233783862)
Wersja 1.0.0-alpha16
10 sierpnia 2022 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zatwierdzenia.
Nowe funkcje
- Paging udostępnia teraz logi za pomocą klasy
LazyPagingItems, aby ujawniać informacje na potrzeby debugowania zebrane z PagingData. - Dzienniki można włączyć za pomocą polecenia
adb shelladb shell setprop log.tag.Paging [DEBUG|VERBOSE]. ([b/235527159}(https://issuetracker.google.com/issues/235527159))
Poprawki błędów
- Naprawiliśmy błąd związany z brakującym konstruktorem
PagingDataDifferpodczas używaniapaging-compose:1.0.0-alpha15zpaging-common:3.1.1lub starszą wersją (b/235256201,b/239868768).
Wersja 1.0.0-alpha15
1 czerwca 2022 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano konstruktory dla
PagingDataAdapteriAsyncPagingDataDiffer, które akceptująCoroutineContextzamiastCoroutineDispatcher. (Idc878)
Poprawki błędów
LazyPagingItemsustawia teraz początkowyloadStatena odświeżanie coLoadState.Loading. (I55043, b/224855902)
Wersja 1.0.0-alpha14
13 października 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha13
29 września 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja
LazyPagingItems.snapshot()została zastąpiona właściwościąLazyPagingItems.itemSnapshotList(Ie2da8) - Wycofana funkcja
LazyPagingItems.getAsState()została usunięta (Ie65e4)
Wersja 1.0.0-alpha12
21 lipca 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcje
items(lazyPagingItems)iitemsIndexed(lazyPagingItems)używane do łączenia paginacji zLazyColumn/Rowakceptują teraz parametr klucza opcji, który umożliwia określenie stabilnego klucza reprezentującego element. Więcej informacji o kluczach znajdziesz tutaj. (I7986d) - Funkcja
lazyPagingItems.getAsState(index)została wycofana. Użyj w zamian zasadylazyPagingItems[index]. (I086cb, b/187339372)
Wersja 1.0.0-alpha11
30 czerwca 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha10
2 czerwca 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha09
18 maja 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Poprawki błędów
- Właściwości itemCount i item getter klasy LazyPagingItems są teraz możliwe do obserwowania, dzięki czemu można ich używać również z LazyVerticalGrid (Ie2446, b/171872064, b/168285687).
Zgodność z Compose
- Komponent
androidx.paging:paging-compose:1.0.0-alpha09jest zgodny tylko z Compose w wersji1.0.0-beta07lub nowszej.
Wersja 1.0.0-alpha08
24 lutego 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Zaktualizowano integrację z Compose w wersji 1.0.0-beta01.
Wersja 1.0.0-alpha07
10 lutego 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Zaktualizowano w celu integracji z Compose alpha12.
Wersja 1.0.0-alpha06
28 stycznia 2021 roku
Publikacja androidx.paging:paging-compose:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Poprawki błędów
Zaktualizowano, aby uwzględnić zależność od Compose 1.0.0-alpha11.
Wersja 1.0.0-alpha05
13 stycznia 2021 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zaktualizowano zależność od Compose 1.0.0-alpha10.
Wersja 1.0.0-alpha04
16 grudnia 2020 roku
Publikacja androidx.paging:paging-compose:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano właściwości ułatwień dostępu
CombinedLoadStates.refresh,CombinedLoadStates.prepend,CombinedLoadStates.append, aby przechodziły ze stanuLoadingdo stanuNotLoadingdopiero wtedy, gdy zarówno stan wczytywania mediatora, jak i źródła będzie miał wartośćNotLoading. Dzięki temu aktualizacja zdalna zostanie zastosowana. (I65619)
Wersja 1.0.0-alpha03
2 grudnia 2020 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
- Zaktualizowano do wersji Compose 1.0.0-alpha08.
Wersja 1.0.0-alpha02
11 listopada 2020 roku
Publikacja androidx.paging:paging-compose:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano metody
.peek(),.snapshot(),.retry()i.refresh()doLazyPagingItem, które udostępniają te same funkcje coAsyncPagingDataDiffer/PagingDataAdapter(Iddfe8, b/172041660)
Wersja 1.0.0-alpha01
28 października 2020 r.
Publikacja androidx.paging:paging-compose:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Artefakt paging-compose zapewnia integrację między biblioteką Paging a Jetpack Compose. Prosty przykład użycia:
@Composable
@OptIn(ExperimentalLazyDsl::class)
fun ItemsDemo(flow: Flow<PagingData<String>>) {
val lazyPagingItems = flow.collectAsLazyPagingItems()
LazyColumn {
items(lazyPagingItems) {
Text("Item is $it")
}
}
}
Wersja 3.0.1
Wersja 3.0.1
21 lipca 2021 r.
Publikacja androidx.paging:paging-*:3.0.1 Wersja 3.0.1 zawiera te zatwierdzenia.
Poprawki błędów
- Uzyskiwanie dostępu do
PagedList.dataSourcez wartości początkowej wygenerowanej przezLivePagedListlubRxPagedListnie będzie już nieprawidłowo powodować błędu IllegalStateException (I96707).
Wersja 3.0.0
Wersja 3.0.0
5 maja 2021 roku
Publikacja androidx.paging:paging-*:3.0.0 Wersja 3.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 3.0.0
Większość interfejsów API z Paging 2.x.x została wycofana na rzecz nowych interfejsów API Paging 3, które wprowadzają te ulepszenia:
- Pełna obsługa współprogramów i środowiska Flow w języku Kotlin
- Pomoc dotycząca anulowania
- Wbudowane sygnały stanu wczytywania i błędu
- funkcję ponawiania i odświeżania,
- Wszystkie 3 podklasy DataSource zostały połączone w ujednoliconą klasę PagingSource.
- Niestandardowe przekształcenia stron, w tym wbudowane przekształcenie do dodawania separatorów
- Nagłówki i stopki stanu wczytywania
Wersja 3.0.0-rc01
21 kwietnia 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-rc01 Wersja 3.0.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że stronicowanie czasami wysyłało do RecyclerView zdarzenia różnicowe bez operacji, co mogło powodować przedwczesne aktywowanie niektórych detektorów. (Ic507f, b/182510751)
Wersja 3.0.0-beta03
24 marca 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-beta03 Wersja 3.0.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Zmieniliśmy sposób obsługi obiektów zastępczych podczas ponownego wczytywania listy, aby zapobiec nieoczekiwanym przeskokom w RecyclerView. Szczegółowe informacje znajdziesz w pliku NullPaddedDiffing.md. (If1490, b/170027529, b/177338149)
- Różne kreatory PagedList (stara ścieżka zgodności) nie wywołują już nieprawidłowo synchronicznie metody
DataSource.Factory.create()w głównym wątku, gdy wywoływana jest metoda.build(). (b/182798948)
Wersja 3.0.0-beta02
10 marca 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-beta02 Wersja 3.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozszerzenia Rx3 prawidłowo przekazują teraz wymaganie dotyczące akceptacji
@ExperimentalCoroutinesApi. Wcześniej były one oznaczane w@get, co jest ignorowane przez kompilator Kotlin z powodu: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
- Naprawiliśmy błąd, który powodował, że w przypadku wywołania zdalnego odświeżania wartość
PagingStatezawsze wynosiłanull. - Rozwiązaliśmy problem, który powodował, że puste strony zwracane przez PagingSource mogły uniemożliwiać ponowne pobieranie danych przez Paging w celu spełnienia warunku
prefetchDistance, co powodowało „zawieszanie się” Paging.
Wersja 3.0.0-beta01
10 lutego 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-beta01 Wersja 3.0.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Opakowania Rx2 i Rx3 udostępniają teraz adnotację eksperymentalną, od której zależą. Jeśli używasz otoki zgodności Rx w paging-rxjava2 lub paging-rxjava3, musisz teraz dodać adnotacje do zastosowań za pomocą
@OptIn(ExperimentalCoroutinesApi::class)(Ib1f9d).
Poprawki błędów
- Naprawiliśmy błąd
IndexOutOfBoundsException: Inconsistency detected, który czasami występował podczas korzystania z interfejsów APIDataSourcew wersji 2 przez ścieżki zgodności. - Wywołanie
isInvalidpodczas inicjowaniaDataSource, gdy jest używane przez ścieżki zgodności, jest teraz prawidłowo uruchamiane w fetchDispatcher, a nie w głównym wątku. Rozwiązuje to problemIllegalStateExceptionspowodowany dostępem do bazy danych w głównym wątku podczas korzystania z implementacjiPagingSourcebiblioteki Room.
Wersja 3.0.0-alpha13
27 stycznia 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha13 Wersja 3.0.0-alpha13 zawiera te zatwierdzenia.
Zmiany w interfejsie API
PagingSource.getRefreshKeynie jest już opcjonalne, ale jest teraz funkcją abstrakcyjną bez domyślnej implementacji. Użytkownicy, którzy przenoszą dane, mogą nadal zwracać domyślną implementację, która po prostu zwracanull, alegetRefreshKey()powinna mieć rzeczywistą implementację zwracającą klucz na podstawie bieżącej pozycji przewijania użytkownika, która umożliwia bibliotece Paging dalsze ładowanie danych wyśrodkowanych wokół obszaru widocznego za pomocąPagingState.anchorPosition, jeśli to możliwe. (I4339a)InvalidatingPagingSourceFactoryjest teraz klasą finalną (Ia3b0a)- Zezwalaj na konfigurowanie zachowania separatora terminala (nagłówka / stopki) za pomocą dodatkowego opcjonalnego parametru SeparatorType. Dostępne są 2 opcje:
FULLY_COMPLETE– dotychczasowe działanie; poczekaj, aż PagingSource i RemoteMediator oznaczą endOfPaginationReached, zanim dodasz separatory końcowe. Jeśli nie jest używany element RemoteMediator, stan zdalnego wczytywania jest ignorowany. Jest to przydatne głównie wtedy, gdy chcesz wyświetlać separatory sekcji tylko wtedy, gdy sekcja jest w pełni załadowana, w tym pobrana ze zdalnego źródła, np. z sieci.SOURCE_COMPLETE– oczekuj tylko, aż PagingSource oznaczy koniec paginacji, nawet jeśli używany jest RemoteMediator. Dzięki temu nagłówki i stopki są wyświetlane synchronicznie z początkowym wczytaniem, co zapobiega konieczności przewijania przez użytkowników w celu zobaczenia separatorów terminali. (Ibe993, b/174700218)
Poprawki błędów
- Naprawiono rzadki wyciek pamięci, który występuje, gdy element PagingSource zostanie unieważniony, zanim element PageFetcher zdąży rozpocząć ładowanie z niego danych. (I9606b, b/174625633)
Wersja 3.0.0-alpha12
13 stycznia 2021 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha12 Wersja 3.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Klasa InvalidatingPagingSourceFactory nie jest już klasą abstrakcyjną, ponieważ nigdy nie miała żadnych metod abstrakcyjnych. (I4a8c4)
- Dodano przeciążenie funkcji .cachedIn(), które akceptuje ViewModel zamiast Lifecycle lub CoroutineScope dla użytkowników Javy. (I97d81, b/175332619)
- Zezwalaj wywołującym w języku Java na asynchroniczne używanie operacji przekształcania PagingData przez akceptowanie obiektu Executor w argumentach operatora przekształcania. Wszystkie operatory przekształcania -Sync mają teraz usunięty sufiks -Sync, a użytkownicy współprogramów Kotlin będą musieli uściślić wywołanie funkcji rozszerzenia, która akceptuje blok zawieszenia.
Wszystkie operatory przekształcania PagingData zostały przeniesione do rozszerzeń w ramach statycznej klasy PagingDataTransforms. Użytkownicy Javy będą musieli wywoływać je za pomocą statycznych metod pomocniczych, np.
PagingDataTransforms.map(pagingData, transform). W przypadku użytkowników Kotlina składnia jest taka sama, ale trzeba zaimportować funkcję. (If6885, b/172895919)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że funkcja
RemoteMediator.load()nie była wywoływana podczasadapter.refresh(), jeśli osiągnięto już koniec paginacji.
Wersja 3.0.0-alpha11
16 grudnia 2020 roku
Publikacja androidx.paging:paging-*:3.0.0-alpha11 Wersja 3.0.0-alpha11 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę zapisanego stanu w tych podstawowych przypadkach użycia (pełna obsługa, zwłaszcza w przypadku źródła warstwowego, jest nadal w trakcie opracowywania):
- przepływ jest przechowywany w pamięci podręcznej, a aplikacja nie jest zamykana (np. przepływ jest przechowywany w pamięci podręcznej w modelu widoku, a aktywność jest odtwarzana w procesie);
- źródło stronicowania jest zliczane, obiekty zastępcze są włączone, a układ nie jest naprzemienny.
Zmiany w interfejsie API
PagingSource.getRefreshKey()jest teraz stabilnym interfejsem API (I22f6f, b/173530980).- Funkcja
PagingSource.invalidatenie jest już otwarta. Jeśli chcesz otrzymywać powiadomienia o unieważnieniu, rozważ wywołanie metody registerInvalidatedCallback zamiast zastępowania metody invalidate. (I628d9, b/173029013, b/137971356) - Klasa Pager ma teraz jeden eksperymentalny konstruktor oraz zwykłe konstruktory, zamiast udostępniać eksperymentalne interfejsy API w nieeksperymentalnym publicznym interfejsie API za pomocą adnotacji akceptacji. (I9dc61, b/174531520)
- Zaktualizowano właściwości ułatwień dostępu
CombinedLoadStates.refresh,CombinedLoadStates.prepend,CombinedLoadStates.append, aby przechodziły ze stanuLoadingdo stanuNotLoadingdopiero wtedy, gdy zarówno stan wczytywania mediatora, jak i źródła będzie miał wartośćNotLoading. Dzięki temu aktualizacja zdalna zostanie zastosowana. (I65619) Usunięto parametr LoadParams.pageSize (był już wycofany). Zalecamy używanie
LoadParams.loadSizew PagingSource.LoadParams.loadSizejest zawsze równePagingConfig.pageSize, z wyjątkiem wywołania wczytywania początkowego, w którym jest równePagingConfig.initialLoadSize.Jeśli testujesz element DataSource Paging2 bez użycia Pager lub PagedList, wartość
pageSizemoże nie być zgodna z wartościąPagingConfig.pageSize, jeśli ustawisz też wartośćinitialLoadSize. Jeśli jest to ważne w przypadku Twoich testów, spróbuj użyć Pager/PagedList, który wewnętrznie ustawi prawidłowy PageSize dla metod wczytywania DataSource. (I98ac7, b/149157296)
Poprawki błędów
- Rozwiązaliśmy problem z awarią spowodowaną przez IllegalStateException podczas używania separatorów z ustawioną wartością PagingConfig.maxSize. (I0ed33, b/174787528)
- Naprawiliśmy błąd, który powodował, że stan wczytywania dla PREPEND / APPEND nie aktualizował się do
NotLoading(endOfPaginationReached = true)natychmiast po początkowym wczytaniu, jeśli ustawiono RemoteMediator (I8cf5a). - Naprawiono błąd, w którym interfejsy API po stronie prezentera, takie jak .snapshot(), .peek() itp., zwracały poprzednią (nieaktualną) listę w ramach aktualizacji ListUpdateCallback.
- Naprawiliśmy błąd, który powodował, że operatory Separators nie dodawały nagłówków ani stopek, gdy były używane z RemoteMediator.
- Naprawiliśmy błąd, który powodował, że aktualizacje LoadState do NotLoading dla RemoteMediator zatrzymywały się w stanie Loading.
- Naprawiliśmy błąd, który powodował, że interfejs API zgodności Paging 2.0 (
.asPagingSourceFactory()) mógł inicjowaćDataSourcew nieprawidłowym CoroutineDispatcher. Rozwiązuje to problem z awarią i możliwymi przypadkami ANR, zwłaszcza podczas korzystania z bieżącej implementacji PagingSource w Room, która używa tej ścieżki zgodności.
Wersja 3.0.0-alpha10
2 grudnia 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha10 Wersja 3.0.0-alpha10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Wycofane interfejsy API
dataRefreshFlowidataRefreshListenerzostały usunięte, ponieważ są zbędne w przypadku aktualizacji loadStateFlow i detektora. W przypadku migracji odpowiednikiem loadStateFlow jest:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Poprawki błędów
- endOfPaginationReached dla RemoteMediator
REFRESHjest teraz prawidłowo propagowane do aktualizacji LoadState i zapobiega wywoływaniu zdalnychAPPENDiPREPEND. (I94a3f, b/155290248) - Wyświetlanie pustej listy z powodu pustej strony początkowej lub intensywnego filtrowania nie będzie już uniemożliwiać rozpoczęcia wczytywania stron
PREPENDaniAPPEND. (I3e702, b/168169730) - Rozwiązaliśmy problem, który powodował, że funkcja
getRefreshKeynie była wywoływana w kolejnych generacjach PagingSource, gdy unieważnienia występowały szybko. (I45460, b/170027530)
Wkład zewnętrzny
- Dodano nową klasę abstrakcyjną InvalidatingPagingSourceFactory z interfejsem API
.invalidate(), który przekazuje unieważnienie do wszystkich emitowanych przez nią obiektów PagingSource. Dziękujemy @claraf3. (Ie71fc, b/160716447)
Znane problemy
- Nagłówki i stopki z przekształcenia .insertSeparators() mogą nie pojawiać się od razu podczas korzystania z RemoteMediator b/172254056
- Użycie RemoteMediator może spowodować, że zdalne
LoadStateutknie, jeśli unieważnienie iPagingSource.load(LoadParams.Refresh(...))zakończą się, zanimRemoteMediator.load()zwróci b/173717820
Wersja 3.0.0-alpha09
11 listopada 2020 roku
Publikacja androidx.paging:paging-*:3.0.0-alpha09 Wersja 3.0.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Całkowicie wycofaj metody dataRefreshFlow / Listener za pomocą klauzuli replaceWith. (I6e2dd)
Poprawki błędów
- Naprawiliśmy błąd powodujący zgłaszanie wyjątku
IllegalArgumentException, gdy używane są separatory z klasą RemoteMediator i wywoływane jest unieważnienie, podczas gdy zdalne wczytywanie, które zwróciłoby endOfPagination, nadal trwa (I3a260).
Wersja 3.0.0-alpha08
28 października 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha08 Wersja 3.0.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Warianty
DataSource.InvalidatedCallbackw językach Kotlin i Java zostały połączone przez włączenie konwersji SAM w Kotlinie za pomocą interfejsu funkcyjnego (dostępnego w Kotlinie 1.4). Naprawiliśmy też błąd, który powodował, że po przekształceniu przez.maplub.mapByPagenie były wywoływane wywołania zwrotne unieważnienia w wariancie Kotlin. (I1f244, b/165313046)
Poprawki błędów
- Znacznie ulepszono interakcję stronicowania z komponentem ViewPager. W szczególności Paging nie będzie już anulować wywołania
RemoteMediator#loadz powodu unieważnienia strony. Nie będzie też wysyłać żądania wstawienia na początku lub na końcu, jeśli wymagane jest odświeżenie, dopóki żądanie odświeżenia nie zostanie zrealizowane. (I6390b, b/162252536) - Sprawdzanie API pod kątem brakującego elementu getter pasującego do konstruktora jest włączone w przypadku androidx (I4bbea, b/138602561).
- Naprawiono błąd, w wyniku którego pomocnicy
.withLoadState*ConcatAdapterulegali awarii z powodu powiadamiania RecyclerView z wątku w tle (I18bb5, b/170988309). - Naprawiliśmy błąd, który powodował, że wczytanie bardzo małej, niepustej strony czasami uniemożliwiało prawidłowe wywoływanie wczytywania przez wstępne pobieranie.Iffda3 b/169259468
Wersja 3.0.0-alpha07
1 października 2020 roku
Publikacja androidx.paging:paging-*:3.0.0-alpha07 Wersja 3.0.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Asynchroniczne operatory PagingData oparte na Guava akceptują teraz Executor jako parametr, aby kontrolować kontekst wykonywania. (Id4372)
Poprawki błędów
- Naprawiliśmy wyjątek IndexOutOfBounds zgłaszany w RemoteMediator z powodu sytuacji wyścigu. (I00b7f, b/165821814)
- Rozwiązaliśmy sytuację wyścigu w konwersji DataSource –> PagingSource, który mógł powodować ignorowanie przez wynikowy obiekt PagingSource sygnałów unieważnienia z obiektu DataSource.
- Rozwiązaliśmy problem w logice pobierania stron, który czasami powodował, że nowe generacje PagingSource nie były odbierane, dopóki nie została wywołana funkcja PagingDataAdapter.refresh().
- Rozwiązaliśmy problem, który powodował, że pozycja przewijania była czasami tracona podczas używania DataSource przekonwertowanego na PagingSource (np. utworzonego przez Room) w połączeniu z RemoteMediator.
Wkład zewnętrzny
- Dziękujemy użytkownikowi @simonschiller za dodanie operatorów asynchronicznych przekształceń RxJava2, RxJava3 i Guava do PagingData.
Wersja 3.0.0-alpha06
2 września 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha06 Wersja 3.0.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
UnsupportedOperationExceptionz wyraźniejszymi komunikatami dotyczącymi braku obsługi stabilnych identyfikatorów jest teraz zgłaszany za każdym razem, gdy wywoływana jest funkcjaPagingDataAdapter.setHasStableIds. (Ib3890, b/158801427)
Poprawki błędów
- Funkcja insertSeparators nie odfiltrowuje już pustych stron, co pozwala prezenterowi uwzględniać odległość wstępnego pobierania nawet w przypadku wstawienia wielu pustych stron. (I9cff6, b/162538908)
Wersja 3.0.0-alpha05
19 sierpnia 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha05 Wersja 3.0.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
- Paging teraz prawidłowo pobiera strony z wyprzedzeniem, nawet gdy wyświetlane dane są mocno przefiltrowane.
- Zwrócenie
LoadResult.Errordo ponownego wczytania nie powoduje już nieprawidłowego ponownego uruchomienia próby dostępu do elementu
Zewnętrzny wkład
- Dziękujemy Clari F za pomoc w porządkowaniu niektórych testów. (549612)
Wersja 3.0.0-alpha04
5 sierpnia 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha04 Wersja 3.0.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs API
peek()doAsyncPagingDataDifferiPagingDataAdapter, aby umożliwić dostęp do prezentowanych danych bez konieczności wczytywania strony wywołującej. (I38898, b/159104197) - Dodano interfejs API
snapshot()doPagingDataAdapteriAsyncPagingDataDiffer, aby umożliwić pobieranie wyświetlanych elementów bez wywoływania pobierania strony. (I566b6, b/159104197) - Dodano konstruktor
PagingData.from(List<T>), który umożliwia prezentowanie list statycznych.Można je połączyć z ogólnym przepływem PagingData, aby wyświetlać listy statyczne w określonych stanach, np. przed zakończeniem początkowego ODŚWIEŻANIA lub po prostu do testowania przekształceń. (Id134d) - Wycofanie interfejsów API dataRefresh Flow / Listener, ponieważ miały one ujawniać stan prezentowanych elementów podczas REFRESH, ale dzięki ulepszeniom czasu wywołania zwrotnego loadState Flow / Listener i właściwości itemCount są one zbędne (Ia19f3)
- Dodano kod zgodności RxJava3 dla
PagingSourceiRemoteMediator(I49ef3, b/161480176).
Poprawki błędów
PositionalDataSourceprzekonwertowane naPagingSourceza pomocą pomocnikatoPagingSourceFactory, w tymPagingSourcewygenerowane przez Room, teraz prawidłowo oznaczają się, aby obsługiwać przeskakiwanie. (I3e84c, b/162161201)- Naprawiliśmy błąd, który powodował, że użycie synchronicznego wariantu metody submitData czasami prowadziło do wyścigu, co powodowało błąd
ClosedSendChannelException(I4d702, b/160192222).
Zewnętrzny wkład
- Dziękujemy Zacowi Sweersowi za dodanie w imieniu Slacka otoczek zgodności z RxJava3. (I49ef3, b/161480176)
Wersja 3.0.0-alpha03
22 lipca 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha03 Wersja 3.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Konstruktor PagingState jest teraz publiczny, co powinno ułatwić testowanie implementacji getRefreshKey() (I8bf15).
- Ukryto warianty funkcji mapy DataSource w Kotlinie przed Javą, aby rozwiązać problem z niejednoznacznością między wariantami oryginalnymi i wariantami w Kotlinie. (If7b23, b/161150011)
- Nadmiarowe interfejsy API przeznaczone dla użytkowników Kotlina zostały oznaczone jako @JvmSynthetic (I56ae5).
- Dodano przeciążenia konstruktora LoadResult.Page, który domyślnie ustawia itemsBefore i itemsAfter na COUNT_UNDEFINED (I47849).
- Zmieniliśmy działanie istniejących operatorów PagingData, aby akceptowali metody zawieszające, i wprowadziliśmy nowe operatory mapSync, flatMapSync i filterSync, które nie zawieszają działania, dla użytkowników Javy. Dotychczasowe metody przekształcania zostały przeniesione do funkcji rozszerzeń, więc użytkownicy Kotlina będą musieli je teraz zaimportować. (I34239, b/159983232)
Poprawki błędów
- Źródła PagingSource Room (i PositionalDataSource) będą teraz wyświetlać separator początkowy jako część pierwszej strony, dzięki czemu użytkownik nie będzie musiał przewijać, aby go zobaczyć. (I6f747, b/160257628)
- Dostęp do elementów w obiektach zastępczych prawidłowo wyzwala teraz wczytywanie PagingSource, dopóki nie zostanie zwrócona strona, która spełnia żądany indeks po przekształceniu przez PagingData.filter() (I95625, b/158763195).
- Naprawiliśmy błąd, który powodował, że czasami przewijanie po zwróceniu błędu przez PagingSource mogło uniemożliwiać ponowną próbę przez PagingDataAdapter.retry(). (I1084f, b/160194384)
- Rozwiązuje problem, który powodował, że po zamknięciu strony dostęp do elementu mógł nie powodować wczytywania stron, mimo że znajdował się w zakresie prefetchDistance (Ie95ae, b/160038730).
- Ustawienie PagingConfig.maxSize nie powoduje już włączania obiektów zastępczych po zdarzeniu upuszczenia (I2be29, b/159667766).
Wersja 3.0.0-alpha02
24 czerwca 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha02 Wersja 3.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenia konstruktora
PagingConfigz typowymi wartościami domyślnymi (I39c50, b/158576040). - Dodano przeciążenia konstruktorów
PagingDataAdapteriAsyncPagingDataDifferz typowymi wartościami domyślnymi (Ie91f5). - Interfejsy API adaptera
dataRefreshFlowidataRefreshListenerprzekazują teraz wartość logiczną, aby wskazać, czyPagingDatajest pusty (I6e37e, b/159054196). - Dodano interfejsy API RxJava i Guava dla RemoteMediator – RxRemoteMediator i ListenableFutureRemoteMediator
- Dodano do PagingState funkcje pomocnicze umożliwiające dostęp do typowych elementów, takich jak
isEmpty()ifirstItemOrNull()(I3b5b6, b/158892717).
Poprawki błędów
- Biblioteka Pager sprawdza teraz, czy w fabryce nie jest ponownie używany obiekt PagingSource, aby zapobiec przypadkowemu ponownemu użyciu nieprawidłowych obiektów PagingSource, które powodowały niejasny błąd (I99809, b/158486430).
- Błędy podczas odświeżania RemoteMediator nie uniemożliwiają już wczytywania PagingSource (I38b1b, b/158892717)
- Wersja funkcji
submitData, która nie zawiesza działania, nie powoduje już awarii z powodu równoczesnego zbierania danych na wielu obiektachPagingData, gdy jest wywoływana po wersji zawieszającej działaniesubmitData. (I26358, b/158048877) - Naprawiono wyjątek „cannot collect twice from pager”, który mógł wystąpić po zmianie konfiguracji (I58bcc, b/158784811).
Wersja 3.0.0-alpha01
10 czerwca 2020 r.
Publikacja androidx.paging:paging-*:3.0.0-alpha01 Wersja 3.0.0-alpha01 zawiera te zatwierdzenia.
Biblioteka Paging została zaktualizowana do wersji 3.0, aby umożliwić korzystanie z kilku ważnych nowych funkcji.
Nowe funkcje w wersji 3.0
- Pełna obsługa współprogramów i środowiska Kotlin Flow.
- Obsługa asynchronicznego wczytywania za pomocą funkcji zawieszania współprogramów, RxJava Single lub elementów podstawowych Guava ListenableFuture.
- Wbudowane sygnały stanu wczytywania i błędów na potrzeby projektowania elastycznego interfejsu, w tym funkcje ponawiania i odświeżania.
- Ulepszenia warstwy repozytorium
- Uproszczony interfejs źródła danych
- Uproszczona paginacja sieci i bazy danych
- Pomoc dotycząca anulowania
- Ulepszenia warstwy prezentacji
Znane problemy
- Dokumentacja Javadoc biblioteki Paging 3 nie jest jeszcze dostępna. W międzyczasie skorzystaj z przewodników, do których linki znajdziesz powyżej, lub z dokumentacji Kotlina. (b/158614050)
Wersja 2.1.2
Wersja 2.1.2
18 marca 2020 r.
Publikacja androidx.paging:paging:2.1.2 Wersja 2.1.2 zawiera te zmiany w porównaniu z wersją 2.1.0.
Poprawki błędów
- Poprawka dla
IndexOutOfBoundsExceptionw rzadkich przypadkach podczas konwertowania pozycji w trakcie unieważniania.
Problem z wersją
Wersja
2.1.1biblioteki Paging została nieprawidłowo opublikowana z błędnie skonfigurowanej gałęzi, co spowodowało ujawnienie częściowo zaimplementowanych interfejsów API i funkcji, które mają zostać udostępnione w przyszłej wersji.Stronicowanie
2.1.2zawiera poprawkę dotyczącą wyśrodkowania ładowania, która została pierwotnie opublikowana w wersji 2.1.1, ale tym razem została prawidłowo wybrana z wersji 2.1.0. Jeśli obecnie używasz wersji 2.1.1, zdecydowanie zalecamy uaktualnienie do tej wersji.
Wersja 2.1.1
Wersja 2.1.1
18 grudnia 2019 r.
Publikacja androidx.paging:paging-*:2.1.1 Wersja 2.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Ciągłe początkowe wczytywanie z PositionalDataSources jest teraz wyśrodkowane wokół ostatniego dostępu, gdy obiekty zastępcze są wyłączone.
Wersja 2.1.0
Wersja 2.1.0
25 stycznia 2019 r.
Wersja 2.1.0 biblioteki Paging została opublikowana bez zmian w stosunku do wersji 2.1.0-rc01.
Wersja 2.1.0-rc01
6 grudnia 2018 r.
Strona 2.1.0-rc01 jest zwalniana bez zmian w stosunku do strony 2.1.0-beta01.
Wersja 2.1.0-beta01
1 listopada 2018 r.
Wersja 2.1.0-beta01 biblioteki Paging została opublikowana bez zmian w stosunku do wersji 2.1.0-alpha01.
Wersja 2.1.0-alpha01
12 października 2018 r.
W Paging 2.1.0-alpha01 wprowadzono 2 główne dodatki – porzucanie stron i biblioteki rozszerzeń KTX dla każdego artefaktu – a także kilka innych zmian w interfejsie API i poprawek błędów.
Zmiany w interfejsie API
- Dodano parametr
PagedList.Config.Builder.setMaxSize(), który ogranicza liczbę wczytanych do pamięci elementów. - Dodaliśmy
androidx.paging.Config()jako alternatywę dlaPagedList.Config.Builderw języku Kotlin - Dodaliśmy
androidx.paging.PagedList()jako alternatywę dlaPagedList.Builderw języku Kotlin - Dodaliśmy
DataSourceFactory.toLiveData()jako alternatywę dlaLivePagedListBuilderw języku Kotlin - Dodano
DataSourceFactory.toObservable()itoFlowable()jako alternatywy w języku Kotlin dlaRxPagedListBuilder - Dodano
AsyncPagedListDiffer.addPagedListListener()do nasłuchiwania, kiedy PagedList jest zamieniana. b/111698609 - Dodano wariant
PagedListAdapter.onCurrentListChanged(), który przechodzi starą i nową listę, a poprzedni wariant został wycofany. - Dodano warianty
PagedListAdapter/AsyncPagedListDiffer.submitList(), które przyjmują dodatkowe wywołanie zwrotne, które jest aktywowane, gdy lista pagedlist jest wyświetlana po porównaniu. Umożliwia to synchronizowanie zamiany obiektu PagedList z innymi aktualizacjami interfejsu. b/73781068 - Dodano
PagedList.getLoadedCount(), aby poinformować Cię, ile elementów jest w pamięci. Pamiętaj, że jeśli obiekty zastępcze są wyłączone, zwracana wartość jest zawsze równa.size().
Poprawki błędów
- Naprawiono sytuację wyścigu podczas porównywania, gdy listy są używane ponownie (b/111591017).
PagedList.loadAround()teraz zgłasza błądIndexOutOfBoundsException, gdy indeks jest nieprawidłowy. Wcześniej mogło dojść do awarii z powodu innego, niejasnego wyjątku.- Rozwiązaliśmy problem, w którym bardzo mały początkowy rozmiar wczytywania w połączeniu z niezmienionymi danymi powodował brak dalszego wczytywania b/113122599
Wersja 2.0.0
Wersja 2.0.0
1 października 2018 r.
Wydaliśmy wersję 2.0.0 biblioteki Paging z jedną poprawką błędu.
Poprawki błędów
- Naprawiliśmy błąd, który mógł powodować awarię podczas bardzo szybkiego przewijania za pomocą
PositionalDataSourcei obiektów zastępczych b/114635383.
Wersja 2.0.0-beta01
2 lipca 2018 r.
Poprawki błędów
- Naprawiono problem z znikaniem treści w niektórych przypadkach dodawania na początku (wyłączone symbole zastępcze, PositionalDataSource) b/80149146
- (Już opublikowane w
1.0.1) Naprawiliśmy błędy powodujące awarie, w którychPagedListAdapteriAsyncPagedListDiffernie sygnalizowały zdarzeń przeniesienia. b/110711937
Zależności sprzed AndroidX
W przypadku poniższych wersji biblioteki Paging sprzed AndroidX uwzględnij te zależności:
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"
}
Wersja 1.0.1
Wersja 1.0.1
26 czerwca 2018 r.
Wersja 1.0.1 modułu stronicowania została opublikowana z jedną poprawką błędu w runtime. Ze względu na stabilność zdecydowanie zalecamy używanie 1.0.1. Wydana została też biblioteka Paging RxJava2 1.0.1, która jest identyczna z biblioteką 1.0.0-rc1.
Poprawki błędów
- Naprawiliśmy błędy powodujące awarie, gdy
PagedListAdapteriAsyncPagedListDiffernie sygnalizowały zdarzeń przeniesienia. b/110711937
RxJava2 w wersji 1.0.0
RxJava2 w wersji 1.0.0-rc1
16 maja 2018 r.
Paging RxJava2 1.0.0-rc1 przechodzi do wersji kandydującej do publikacji bez zmian w stosunku do początkowej wersji alfa.
Wersja 1.0.0
Wersja 1.0.0-rc1
19 kwietnia 2018 r. Wersja kandydująca do publikacji dotycząca stronicowania
Nie mamy żadnych innych znanych problemów ani nowych funkcji zaplanowanych w wersji Paging 1.0.0. Zaktualizuj swoje projekty, aby korzystać z 1.0.0-rc1, i pomóż nam przetestować tę funkcję, abyśmy mogli wprowadzić na rynek niezawodną wersję 1.0.0.
W tej wersji nie ma żadnych zmian, jest taka sama jak 1.0.0-beta1.
Wersja 1.0.0-beta1
5 kwietnia 2018 r.
Paging będzie przez krótki czas w wersji beta, zanim przejdzie do wersji kandydującej do publikacji.
Nie planujemy dalszych zmian w interfejsie API Paging 1.0, a wymagania dotyczące wprowadzania zmian w interfejsie API są bardzo wysokie.
Obsługa RxJava2 w wersji alfa dla Paging jest dostępna jako osobny opcjonalny moduł (android.arch.paging:rxjava2:1.0.0-alpha1) i będzie tymczasowo oznaczana osobną wersją, dopóki nie zostanie ustabilizowana.
Ta nowa biblioteka udostępnia alternatywę RxJava2 dla LivePagedListBuilder, która może tworzyć obiekty Observable i Flowable, przyjmując Scheduler zamiast 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();
Nowe funkcje
RxPagedListBuilderjest dodawany za pomocą nowego artefaktuandroid.arch.paging:rxjava2.
Zmiany w interfejsie API
Zmiany w interfejsie API mające na celu wyjaśnienie roli wykonawców w kreatorach:
Zmieniono nazwę
setBackgroundThreadExecutor()nasetFetchExecutor()(w:PagedList.BuilderiLivePagedListBuilder)Zmieniono nazwę elementu
setMainThreadExecutor()nasetNotifyExecutor()(w:PagedList.Builder).
Naprawiono element
PagedList.mCallbacks, aby był prywatny.
Poprawki błędów
LivePagedListBuilderwywołuje początkowe wczytywaniePagedListna określonym wykonawcy zamiast w puli wątków komponentów architektury.Naprawiono zachowanie unieważniania w wewnętrznych otokach
DataSource(używanych do implementowaniaDataSource.map, a także ładowaniaPositionalDataSourcez wyłączonymi elementami zastępczymi) b/77237534
Wersja 1.0.0-alpha7
21 marca 2018 r.
Wraz z funkcją Cykle życia 1.1.1 udostępniamy funkcję Paging 1.0.0-alpha7. Ponieważ Paging alpha7 zależy od przeniesienia wspomnianej wyżej klasy Function, musisz zaktualizować zależność lifecycle:runtime do wersji android.arch.lifecycle:runtime:1.1.1.
Paging alpha7 ma być ostatnią wersją przed wersją beta.
Zmiany w interfejsie API
- Obiekty
DataSource.LoadParamsmają teraz konstruktor publiczny, a obiektyDataSource.LoadCallbacksą teraz abstrakcyjne. Umożliwia to opakowanieDataSourcelub bezpośrednie testowanieDataSourceza pomocą funkcji zwrotnej.b/72600421 - Mappery dla DataSource i DataSource.Factory
map(Function<IN,OUT>)umożliwia przekształcanie, opakowywanie i ozdabianie wyników wczytywanych przezDataSource.mapByPage(<List<IN>,List<OUT>>)umożliwia to samo w przypadku przetwarzania wsadowego (np. jeśli elementy wczytane z SQL muszą dodatkowo wysłać zapytanie do osobnej bazy danych, można to zrobić w ramach przetwarzania wsadowego).
- Dodano metodę pomocniczą
PagedList#getDataSource(). b/72611341 - Z interfejsu API zostały usunięte wszystkie wycofane klasy, w tym pozostałości pakietu
recyclerview.extensionsiLivePagedListProvider. DataSource.Factoryzostała zmieniona z interfejsu na klasę abstrakcyjną, aby umożliwić korzystanie z funkcji mapy.
Poprawki błędów
- Zmiana klasy Builders na finalną. b/70848565
- Naprawiono implementację Room
DataSource, aby obsługiwała zapytania dotyczące wielu tabel – ta poprawka jest zawarta w Room 1.1.0-beta1 (patrz wyżej). - Naprawiliśmy błąd, który powodował, że metoda
BoundaryCallback.onItemAtEndLoadednie była wywoływana w przypadkuPositionalDataSource, jeśli obiekty zastępcze były włączone, a łączny rozmiar był wielokrotnością rozmiaru strony.
Wersja 1.0.0-alpha5
22 stycznia 2018 r.
Poprawki błędów
- Naprawienie wczytywania strony, gdy obiekty zastępcze są wyłączone b/70573345
- Dodatkowe logowanie do śledzenia błędu IllegalArgumentException b/70360195 (i spekulatywna poprawka po stronie Room)
- Poprawki przykładowego kodu Javadoc: b/70411933, b/71467637