Strona
Ta tabela zawiera wszystkie artefakty w grupie androidx.paging
.
Artefakt | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
stronicowanie-* | 3.3.2 | - | - | - |
stronicowanie-tworzenie | 3.3.2 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od stronicowania, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .
Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle
aplikacji lub modułu:
Odlotowe
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") }
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz na stronie dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.
Zobacz dokumentację narzędzia Issue Tracker. .
Wersja 3.3
Wersja 3.3.2
7 sierpnia 2024 r.
Usługa androidx.paging:paging-*:3.3.2
została zwolniona. Wersja 3.3.2 zawiera te zatwierdzenia.
Nowe funkcje
- Do
paging-common
ipaging-testing
dodano nowe cele Kotlin-wieloplatformowe:watchos
,tvos
ilinuxArm64
(90c9768), (53e0eca).
Wersja 3.3.1
24 lipca 2024 r.
Usługa androidx.paging:paging-*:3.3.1
została zwolniona. Wersja 3.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że interfejs
AsyncPagingDataDiffer
lub interfejsy API utworzone na jego podstawie, takie jakPagingDataAdapter
używane z zasadąRecyclerView
, nie mogły uruchomić więcej operacji, gdy źródło danych zapasowych odświeżało się podczas przewijania. (I60ca5, b/352586078) - Rozwiązaliśmy problem, który występował, gdy elementy były usuwane ze źródła danych podczas przewijania elementu
RecyclerView
przy użyciuPagingDataAdapter
lubAsyncPagingDataDiffer
. (I8c65a, b/347649763)
Wersja 3.3.0
14 maja 2024 r.
Usługa androidx.paging:paging-*:3.3.0
została zwolniona. Wersja 3.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 3.2.0
PagingDataPresenter
jest teraz klasą publiczną. Wieloplatformowe prezentery mogą teraz być oparte naPagingDataPresenter
, zamiast wymagać wewnętrznych interfejsów API stronicowania lub interfejsuAsyncPagingDataDiffer
paging-runtime
.- Dodano nowe metody pomocnicze
LoadStates
iCombinedLoadStates
w metodachhasError
iisIdle
, aby sprawdzić, czyLoadStates
ma odpowiednio stan Błąd lubNotLoading
. W systemieFlow<CombinedLoadStates>
dodano również nową metodę rozszerzeniaawaitNotLoading()
Kotlin, która czeka, aż wczytywanie zmieni się w stanNotLoading
lub Błąd. - Funkcja
PagingData.empty()
domyślnie wysyła teraz stanyNotLoading
, chyba że do konstruktora zostaną przekazane niestandardowe stanyLoadStates
. Takie działanie nie ma związku z istniejącym zachowaniem, w ramach którego nie wysyła polaLoadStates
po przesłaniu doPagingDataAdapter
lub wysyła stany wczytywania, gdy jest zbierany jakoLazyPagingItems
. Jeśli wybierzesz opcjęLazyPagingItems
, od razu po utworzeniu kompozycji będzie się wyświetlać pusta lista.
Zgodność z platformą Kotlin – wieloplatformowa
Funkcja stronicowania obecnie wysyła artefakty zgodne z platformą Kotlin Multiplatform. Jest to w dużej mierze związane z opracowanymi nad nią materiałami pochodzącymi z projektu multiplatform-paging firmy CashApp.
- Usługa
paging-common
przeniosła wszystkie interfejsy API stronicowania 3 docommon
. Jest teraz zgodna nie tylko z Androidem, ale także z jvm i iOS. - Kod partnera
paging-testing
został przeniesiony do usługicommon
. Jest teraz zgodny nie tylko z Androidem, ale też z jvm i iOS. - Kod
paging-compose
został przeniesiony docommon
i wysyła artefakt Androida, który jest zgodny z obsługą wieloplatformowąandroidx.compose
. paging-runtime
,paging-guava
,paging-rxjava2
ipaging-rxjava3
pozostaną tylko na Androidzie.
Wersja 3.3.0-rc01
1 maja 2024 r.
Udostępniono interfejs androidx.paging:paging-*:3.3.0-rc01
bez zmian w wersji 3.3.0-beta01. Wersja 3.3.0-rc01 zawiera te zatwierdzenia.
Wersja 3.3.0-beta01
3 kwietnia 2024 r.
Wersja androidx.paging:paging-*:3.3.0-beta01
została udostępniona bez istotnych zmian. Wersja 3.3.0-beta01 zawiera te zatwierdzenia.
Wersja 3.3.0-alpha05
20 marca 2024 r.
Usługa androidx.paging:paging-*:3.3.0-alpha05
została zwolniona. Wersja 3.3.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja stronicowania korzysta teraz z adnotacji
@MainThread
adnotacji AndroidaX na potrzeby wspólnego kodu. (I78f0d, b/327682438)
Wersja 3.3.0-alfa04
6 marca 2024 roku
Usługa androidx.paging:paging-*:3.3.0-alpha04
została zwolniona. Wersja 3.3.0-alfa04 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy drobne błędy w dokumentacji związane z dodaniem zgodności z platformami Kotlin. (Aosp/2950785).
Wersja 3.3.0-alfa03
7 lutego 2024 r.
Usługa androidx.paging:paging-*:3.3.0-alpha03
została zwolniona. Wersja 3.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
PagingDataPresenter
jest teraz klasą publiczną. Wieloplatformowe prezentery mogą teraz być oparte naPagingDataPresenter
, zamiast wymagać wewnętrznych interfejsów API stronicowania lub interfejsuAsyncPagingDataDiffer
paging-runtime
. (Id1f74, b/315214786)- Dodano nowe metody pomocnicze
LoadStates
iCombinedLoadStates
, aby sprawdzić, czyLoadStates
ma stan Błąd lubNotLoading
. Dodaliśmy też nowy interfejs API, który czeka wLoadStateFlow
, dopóki obciążenie nie osiągnie stanuNotLoading
lub błędu. (Id6c67).
Zmiana w działaniu
- Funkcja
PagingData.empty()
domyślnie wysyła teraz stanyNotLoading
, chyba że do konstruktora zostaną przekazane niestandardowe stanyLoadStates
. Takie działanie nie ma związku z istniejącym zachowaniem, w ramach którego nie wysyła polaLoadStates
po przesłaniu doPagingDataAdapter
lub wysyła stany wczytywania, gdy jest zbierany jakoLazyPagingItems
. Jeśli wybierzesz opcjęLazyPagingItems
, od razu po utworzeniu kompozycji będzie się wyświetlać pusta lista. (I4d11d, b/301833847)
Wersja 3.3.0-alfa02
20 września 2023 r.
Usługa androidx.paging:paging-*:3.3.0-alpha02
została zwolniona. Wersja 3.3.0-alfa02 zawiera te zatwierdzenia.
Zgodność z platformą Kotlin – wieloplatformowa
Funkcja stronicowania obecnie wysyła artefakty zgodne z platformą Kotlin Multiplatform. Jest to w dużej mierze związane z opracowanymi nad nią materiałami pochodzącymi z projektu multiplatform-paging firmy CashApp. Pozwoli to nam uniknąć rozbieżności między 2 repozytoriami i zapewnić ich zgodność.
- Usługa
paging-common
przeniosła wszystkie interfejsy API stronicowania 3 docommon
. Jest teraz zgodna nie tylko z Androidem, ale także z jvm i iOS. - Kod partnera
paging-testing
został przeniesiony do usługicommon
. Jest teraz zgodny nie tylko z Androidem, ale też z jvm i iOS. - Kod
paging-compose
został przeniesiony docommon
i wysyła artefakt Androida, który jest zgodny z obsługą wieloplatformowąandroidx.compose
. paging-runtime
,paging-guava
,paging-rxjava2
ipaging-rxjava3
pozostaną tylko na Androidzie.
Zmiany interfejsu API
- Interfejs publiczny Loggera, który był przeznaczony wyłącznie do użytku wewnętrznego, został wycofany (I16e95, b/288623117)
Treści tłumaczone przez użytkowników zewnętrznych
Wersja 3.3.0-alfa01
20 września 2023 r.
- Jest to pierwsza wieloplatformowa wersja bibliotek androidx.paging. Ta wersja ma tylko artefakty
*-jvm
i*-android
. W przypadku wersji na systemy macOS, iOS i Linux użyj3.3.0-alpha02
.
Wersja 3.2
Wersja 3.2.1
6 września 2023 r.
Usługa androidx.paging:paging-*:3.2.1
została zwolniona. Wersja 3.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że interfejs API
asSnapshot()
artefaktu testowania stron internetowych zawieszał się po przekazaniu procesu utworzonego przy użyciuPagingData.from(List)
, ponieważasSnapshot()
nie miał żadnych 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 uzupełniać (np.flowOf(PagingData.from(...))
). W przypadku procesów, których nie można uzupełniać (np.MutableStateFlow
, użyj przeciążeniaPagingData.from
, które zapewniaLoadStates
. (I502c3). - Funkcja tworzenia stron docelowych używa teraz wewnętrznie funkcji
AndroidUiDispatcher.Main
, aby zapewnić dostępność nowych danych w tej samej ramce po zakończeniu wczytywania. (Ia55af).
Wersja 3.2.0
26 lipca 2023 r.
Usługa androidx.paging:paging-*:3.2.0
została zwolniona. Wersja 3.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 3.1.0
- Funkcja Paging Compose osiągnęła stabilność interfejsu API i została połączona z pozostałymi elementami strony, gdzie jej wersja jest teraz zgodna ze wszystkimi pozostałymi artefaktami stronicowania. Zmiany wprowadzone od wersji 3.1.0 obejmują:
- Obsługa podglądu listy fałszywych danych przez utworzenie elementu
PagingData.from(fakeData)
i zapakowanie goPagingData
w elementMutableStateFlow
(np.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). Przekaż ten proces do elementów kompozycyjnych@Preview
jako odbiorcy, aby aplikacjacollectAsLazyPagingItems()
wyświetliła podgląd. - Obsługa wszystkich leniwych układów, np.
LazyVerticalGrid
iHorizontalPager
, oraz niestandardowych komponentów leniwych z bibliotek Wear i TV. Udało się to osiągnąć dzięki nowym metodom rozszerzeńLazyPagingItems
niższego poziomu (itemKey
) iitemContentType
, które ułatwiają wdrożenie parametrówkey
icontentType
w standardowych interfejsach APIitems
, które już istnieją w usługachLazyColumn
iLazyVerticalGrid
, a także w ich odpowiednikach w interfejsach API, takich jakHorizontalPager
. - Wycofano
items(lazyPagingItems)
iitemsIndexed(lazyPagingItems)
, które obsługują tylkoLazyListScope
.
- Obsługa podglądu listy fałszywych danych przez utworzenie elementu
- Nowy artefakt
paging-testing
, który udostępnia interfejsy API opracowane pod kątem testowania jednostkowego każdej warstwy aplikacji i jej integracji z weryfikacją w izolacji. Zawiera on na przykład:- Klasa
TestPager
, która umożliwia weryfikację działania własnej niestandardowej implementacjiPagingSource
niezależnie od pagera i prawdziwego interfejsu użytkownika. asPagingSourceFactory
Interfejsy API do przekształcaniaFlow<List<Value>>
lub statycznegoList<Value>
w elementyPagingSourceFactory
, które można przekazać do pagera w testach.asSnapshot
rozszerzenie Kotlin w systemieFlow<PagingData<Value>>
, które przekładaFlow<PagingData<Value>>
na bezpośrednieList<Value>
. InterfejsasSnapshot lambda
umożliwia naśladowanie interfejsu aplikacji za pomocą interfejsów API takich jakscrollTo
lubappendScrollWhile
, dzięki czemu możesz sprawdzać poprawność podsumowania danych w dowolnym momencie zbioru danych ze stronami.
- Klasa
- Dodaliśmy logi domyślne, aby informacje na potrzeby debugowania stron internetowych były ujawniane na 2 poziomach:
VERBOSE
iDEBUG
. Logi można włączyć za pomocą poleceniaadb shell setprop log.tag.Paging [DEBUG|VERBOSE]
. Dotyczy to zarówno tworzenia stron w widokach stron, jak i tworzenia stron w funkcji tworzenia. - Dodano konstruktory dla interfejsów
PagingDataAdapter
iAsyncPagingDataDiffer
, które akceptująCoroutineContext
zamiastCoroutineDispatcher
. - Dodaliśmy nowy interfejs funkcjonalny
PagingSourceFactory
, który zapewnia wyraźniejszy interfejs API niż poprzedni znak () ->PagingSource
lambda. Tej fabryki można użyć do utworzenia instancji pagera.
Wersja 3.2.0-rc01
21 czerwca 2023 r.
Usługa androidx.paging:paging-*:3.2.0-rc01
została zwolniona. Wersja 3.2.0-rc01 zawiera te zatwierdzenia.
Treści tłumaczone przez użytkowników zewnętrznych
Wersja 3.2.0-beta01
7 czerwca 2023 r.
Usługa androidx.paging:paging-*:3.2.0-beta01
została zwolniona. Wersja 3.2.0-beta01 zawiera te zatwierdzenia.
Tworzenie w tempie
- Funkcja Paging Compose oficjalnie osiągnęła stabilność interfejsu API. W związku z tym wersja została zaktualizowana z
1.0.0-alpha20
, aby pasowała do wersji wszystkich pozostałych artefaktów strony.
Zmiany interfejsu API
- Usunięto wycofane interfejsy API
items(LazyPagingItems)
iitemsIndexed(LazyPagingItems)
z narzędzia Paging Compose. Przykładowe zastępcze interfejsy API znajdziesz w informacjach o wersji narzędzia Paging Compose1.0.0-alpha20
. (I9626e)
Wersja 3.2.0-alfa06
24 maja 2023 r.
Usługa androidx.paging:paging-*:3.2.0-alpha06
została zwolniona. Wersja 3.2.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy nowy interfejs funkcjonalny
PagingSourceFactory
, który zapewnia wyraźniejszy dostęp do interfejsu API niż obecne zestawy lambda() -> PagingSource
. Tej fabryki można użyć do utworzenia instancjiPager
. (I33165, b/280655188) - Dodano nowy interfejs API
paging-testing
typuList<Value>.asPagingSourceFactory()
, aby uzyskaćPagingSourceFactory
, który wczytuje się tylko ze stałej listy danych. Istniejące rozszerzenie w witrynieFlow<List<Value>>
nadal powinno być używane do testowania z użyciem wielu generowania danych statycznych. (Id34d1, b/280655188)
Zmiany interfejsu API
- Wszystkie publiczne interfejsy API używane do testowania stronicowania są teraz oznaczone adnotacjami
@VisibleForTesting
, aby mieć pewność, że te interfejsy API są używane tylko w testach. (I7db6e). - Interfejs API
asSnapshot
nie wymaga już przekazywaniaCoroutineScope
. Teraz domyślnie używany jest kontekst odziedziczony z zakresu nadrzędnego. (Id0a78, b/282240990) - Zmieniono kolejność parametrów konstruktora
TestPager
, aby intuicyjnie dopasowywać kolejność rzeczywistych parametrów konstruktoraPager
(I6185a) - Przeniesiono użycie funkcji lambda typu
() -> PagingSource<Key, Value>
w testach stronicowania do typuPagingSourceFactory<Key, Value>
. (I4a950, b/280655188)
Zmiany w działaniu
- Główny dyspozytor nie jest już wymagany do uruchamiania testów stronicowania
asSnapshot
. Ustawienie go nie powoduje już żadnych zmian w działaniu testowym. (IE56ea).
Wersja 3.2.0-alpha05
3 maja 2023 r.
Usługa androidx.paging:paging-*:3.2.0-alpha05
została zwolniona. Wersja 3.2.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Domyślnie parametr
loadOperations
w interfejsie Paging Testing API interfejsuasSnapshot
to pusta kolumna lambda. Dzięki temu możesz wywoływać funkcjęasSnapshot
bez przekazywania żadnych operacji wczytywania w celu pobrania danych z początkowego wczytywania danych. (Ied354, b/277233770)
Ulepszenia dokumentacji
- Zaktualizowaliśmy dokumentację dotyczącą
asPagingSourceFactory()
, aby doprecyzować, że jest to metoda rozszerzenia wFlow
, która zwraca fabrykę wielokrotnego użytku na potrzeby generowania instancjiPagingSource
. (I5ff4f, I705b5) - Zaktualizowaliśmy dokumentację dotyczącą
LoadResult.Page
konstruktora, aby doprecyzować, że trzeba zastąpić elementyitemsBefore
iitemsAfter
, aby umożliwić korzystanie z skoków. (Ied354).
Treści tłumaczone z zewnątrz
- Dziękujemy Veyndan za wkład w odejście od specyfikacji Androida/JVM. (nr 525, 523, 520, 519, 507, 506, 505, nr 499, nr 497, #496, nr 493)
Wersja 3.2.0-alfa04
8 lutego 2023 r.
Usługa androidx.paging:paging-*:3.2.0-alpha04
została zwolniona. Wersja 3.2.0-alfa04 zawiera te zatwierdzenia.
Testowanie testowania
- Artefakt
paging-testing
zawiera teraz metodęasPagingSourceFactory
służącą do tworzenia elementupagingSourceFactory
zFlow<List<Value>>
, który ma zostać przesłany do pagera. Każdy elementList<Value>>
wygenerowany w przepływie reprezentuje wygenerowanie danych z podziałem na strony. Ułatwia to testy stronicowania, na przykład przekształceniaPagingData
, przez sfałszowanie źródła danych, z którego ma zbierać pager. (I6f230, b/235528239) Artefakt
paging-testing
został powiększony o nowe interfejsy API odpowiednie do sprawdzania, czy dane zawarte w elemencieFlow<PagingData<T>>
są prawidłowe. Można to użyć na przykład do potwierdzenia danych wyjściowych funkcjiFlow<PagingData<T>>
z warstwy ViewModel.Można to zrobić za pomocą rozszerzenia
asSnapshot
Kotlin w systemieFlow<PagingData<Value>>
, które przekładaFlow<PagingData<Value>>
na bezpośredniList<Value>
. Funkcja lambdaasSnapshot
umożliwia naśladowanie UI aplikacji za pomocą interfejsów API takich jakscrollTo
czyappendScrollWhile
w spójny i powtarzalny sposób, dzięki czemu możesz sprawdzać poprawność podsumowania danych w dowolnym momencie zbioru danych ze stronami.// 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
to metodasuspend
, która powinna zostać uruchomiona w ciągurunTest
. Więcej informacji znajdziesz w sekcji Testowanie współprogramów Kotlin na Androidzie. (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ib29}, I59}
Zmiany interfejsu API
- Wywołania interfejsu
getItem
ipeek
w językachAsyncPagingDataDiffer
iPagingDataAdapter
są teraz prawidłowo oznaczane jako dostępne tylko do wywołania w wątku głównym. (I699b6) - Usunęliśmy symbole wieloznaczne z typów ogólnych używanych przez
TestPager
, co ułatwiło wykorzystywanie wyników tych metod w kodzie napisanym w języku programowania Java. (I56c42)
Wersja 3.2.0-alfa03
24 października 2022 r.
Usługa androidx.paging:paging-*:3.2.0-alpha03
została zwolniona. Wersja 3.2.0-alfa03 zawiera te zatwierdzenia.
Testowanie testowania
Ta wersja zawiera nowy artefakt: paging-testing
. Ten artefakt udostępnia interfejsy API opracowane z myślą o testowaniu jednostkowym każdej warstwy aplikacji i jej integracji z weryfikacją w izolacji.
Na przykład ta pierwsza wersja zawiera klasę TestPager
, która umożliwia sprawdzanie działania własnej niestandardowej implementacji PagingSource
niezależnie od interfejsu Pager
i rzeczywistego interfejsu użytkownika, które normalnie są potrzebne do symulowania kompleksowej integracji stronicowania.
Element TestPager
należy uznać za fałszywy – podwójny testowy, który odzwierciedla prawdziwą implementację Pager
, a jednocześnie upraszcza interfejs API do testowania PagingSource
. Te interfejsy API są interfejsami API suspend
. Należy je uruchamiać w obrębie runTest
zgodnie z opisem w przewodniku testowania współrzędnych Kotlina na Androidzie.
Przykładowe użyte interfejsy API można znaleźć w testach room-paging
, które zostały zmienione na wykorzystanie TestPager
.
Zmiany interfejsu API
- Umożliwia wygodne iterację w czasie od
LoadResult.Page.data
doLoadResult.Page.iterator()
. Pośrednio pozwala to na korzystanie z metodyflatten
biblioteki standardowej Kotlin, gdy jest podawana właściwośćList<LoadResult.Page>
, na przykład właściwośćpages
PagingState
przekazywana do metodyPagingSource.getRefreshKey
. (IE0718)
Wersja 3.2.0-alfa02
10 sierpnia 2022 r.
Usługa androidx.paging:paging-*:3.2.0-alpha02
została zwolniona. Wersja 3.2.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Podział na strony udostępnia teraz logi za pomocą klas
AsyncPagingDataDiffer
lubPagingDataAdapter
, co pozwala udostępniać informacje na potrzeby debugowania zebrane z metodyPagingData
. - Logi można włączyć za pomocą polecenia
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE].
(b/235527159)
Poprawki błędów
- Naprawiliśmy brakujący błąd konstruktora
PagingDataDiffer
występujący w przypadku używaniapaging-common:3.2.0-alpha01
w środowisku wykonawczympaging-runtime:3.1.1
lub starszym.(b/235256201).
Wersja 3.2.0-alpha01
1 czerwca 2022 r.
Usługa androidx.paging:paging-*:3.2.0-alpha01
została zwolniona. Wersja 3.2.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano konstruktory dla interfejsów
PagingDataAdapter
iAsyncPagingDataDiffer
, które akceptująCoroutineContext
zamiastCoroutineDispatcher
. (Idc878). - Domyślnie
PagingData.from()
iPagingData.empty()
nie będą już miały wpływu naCombinedLoadStates
po stronie prowadzącego. Zostało dodane nowe przeciążenie, które umożliwia przekazywanie do tych konstruktorów elementówsourceLoadStates
iremoteLoadStates
, aby zachować dotychczasowe zachowanie ustawieniaLoadStates
w celu zachowania pełnej końcowej wartości (tj.NotLoading(endOfPaginationReached = false)
), w razie potrzeby możesz też uwzględnić stany zdalne. Jeśli wartośćLoadStates
nie zostanie przekazana, poprzednia wartośćCombinedLoadStates
zostanie zachowana po stronie prowadzącego, gdy otrzyma statyczne danePagingData
. (Ic3ce5, b/205344028)
Poprawki błędów
- Wynik funkcji
PagingSource.getRefreshKey()
ma teraz prawidłowy priorytet względeminitialKey
w przypadkach, gdy zwróci wartość null, ale została ustawiona wartośćinitialKey
inna niż null. (IC9542, b/230391606)
Treści tłumaczone przez użytkowników zewnętrznych
- Aktualizacja interfejsu :compose:ui:ui-test api (updateApi) w związku z migracją test-coroutines-lib (I3366d)
Wersja 3.1
Wersja 3.1.1
9 marca 2022 r.
Usługa androidx.paging:paging-*:3.1.1
została zwolniona. Wersja 3.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto pośrednie zdarzenia
LoadState.NotLoading
między generacjami, które zostały nieprawidłowo wstawione przez narzędzie.cachedIn()
. Ta zmiana znacznie ułatwia reagowanie na zmiany w trybieLoadState
przez usunięcie zbędnych zdarzeńLoadState.NotLoading
, które zostały wygenerowane między ponawianiem nieudanych prób wczytywania, podczas odświeżania lub unieważnianiu.
Wersja 3.1.0
17 listopada 2021 r.
Usługa androidx.paging:paging-*:3.1.0
została zwolniona. Wersja 3.1.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 3.0.0
- Interfejsy API
Flow<PagingData>.observable
iFlow<PagingData>.flowable
nie są już eksperymentalne - Zmiany w zachowaniu użytkownika
LoadState
:endOfPaginationReached
ma teraz zawsze wartośćfalse
w przypadkuLoadType.REFRESH
zarówno w przypadkuPagingSource
, jak iRemoteMediator
- Element
LoadStates
z stron docelowych czeka teraz na prawidłowe wartości zPagingSource
iRemoteMediator
przed przekazaniem danych w dół. Nowe generacje funkcjiPagingData
będą teraz zawsze prawidłowo zaczynać się od wartościLoading
w przypadku stanu odświeżania, a w niektórych przypadkach nie zostaną nieprawidłowo zresetowane do wartościNotLoading
. - Interfejsy
.loadStateFlow
i.addLoadStateListener
w interfejsach API prowadzącego prezentację nie wysyłają już nadmiarowo początkowej wartościCombinedLoadStates
, w której stan mediatora jest zawsze ustawiony nanull
- Anulowanie subskrypcji w przeszłości odbywa się teraz bezzwłocznie w przypadku unieważnienia lub nowych generacji. Nie powinno być już wymagane używanie funkcji
.collectLatest
w systemieFlow<PagingData>
, ale nadal jest to zalecane. - Element
PagingSource.LoadResult.Invalid
został dodany jako nowy typ zwrotu z elementuPagingSource.load
. Powoduje to odrzucenie wszystkich oczekujących i przyszłych żądań obciążenia do tego zasobu (PagingSource
) i unieważnianie go. Ten typ zwracania służy do obsługi potencjalnie nieprawidłowych lub nieaktualnych danych, które mogą zostać zwrócone z bazy danych lub sieci. - Dodano interfejsy API prowadzące do prezentacji
.onPagesPresented
i.addOnPagesUpdatedListener
, które uruchamiały się synchronicznie w miarę prezentacji stron w interfejsie. Aktualizacje stron mogą mieć miejsce w tych sytuacjach:- Początkowe wczytywanie nowej generacji elementów PagingData zostanie ukończone niezależnie od tego, czy nowa generacja będzie zawierać jakiekolwiek zmiany w prezentowanych elementach. na przykład Nowe generowanie, które ukończy wstępne wczytywanie bez aktualizacji, ponieważ lista jest dokładnie taka sama, wywoła to wywołanie zwrotne.
- Strona zostanie wstawiona, nawet jeśli nie zawiera nowych produktów.
- Strona zostaje usunięta, nawet jeśli była pusta.
Wersja 3.1.0-rc01
3 listopada 2021 r.
Usługa androidx.paging:paging-*:3.1.0-rc01
została zwolniona. Wersja 3.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy warunek wyścigu i wyciek pamięci w funkcji .cachedIn() w przypadkach, gdy w ramach funkcji PagingData wysyłano wiele zdarzeń ładowania strony w dół przy braku obserwatorów lub w okresie, gdy obserwator przełączał się na nowe strony PagingData. (IB682e)
Wersja 3.1.0-beta01
13 października 2021 r.
Usługa androidx.paging:paging-*:3.1.0-beta01
została zwolniona. Wersja 3.1.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że duża liczba szybkich dostępów do elementów mogła być pomijana w ramach parametru prefetchOdległość, co powodowało wstrzymywanie wczytywania strony. Problem ten występuje szczególnie w przypadku, gdy wiele elementów jest rozmieszczonych jednocześnie, a ich wczytywanie powinno być ustalane na podstawie kierunku przewijania przez użytkownika. Dostępy do tych elementów są teraz buforowane i nadawane synchronicznie według priorytetów, aby zapobiec ich utracie. (Aosp/1833273).
Wersja 3.1.0-alfa04
29 września 2021 r.
Usługa androidx.paging:paging-*:3.1.0-alpha04
została zwolniona. Wersja 3.1.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Interfejsy API:
Flow<PagingData>.observable
iFlow<PagingData>.flowable
nie są już eksperymentalne. (Ie0bdd)
Poprawki błędów
- W przypadku LoadStates
endOfPaginationReached
to teraz zawszefalse
zaLoadType.REFRESH
. Wcześniej można było EndOfPaginationOsiągniętotrue
dla RemoteMediatorREFRESH
, ale nie dla strony PagingSource. Ten sposób działania jest teraz skonsolidowany i zawsze zwracafalse
, ponieważ opcja ODŚWIEŻENIA nigdy nie ma sensu, a teraz jest jako część umowy dotyczącej interfejsu API w LoadStates. Podejmując decyzję, podział na strony zostaje zakończony, zawsze należy to robić w odniesieniu do wybierz kierunek APPEND lub PREPEND. (I047b6) Parametry LoadState z stronicowania czekają teraz na prawidłowe wartości z obu PagingSource i RemoteMediator przed rozpoczęciem przesyłania między kolejnymi wiele pokoleń. Uniemożliwia to wysyłanie nowych generacji danych PagingData NotLoading in CompledLoadStates.source.refresh, jeśli już był Wczytuję; nowe generacje PagingData będą teraz zawsze prawidłowo uruchamiane z ładowaniem w przypadku stanu odświeżania zamiast pierwszym resetowaniem stanu do stanu NieLoading niewłaściwie w niektórych przypadkach.
Anulowanie subskrypcji w przeszłości odbywa się teraz bezzwłocznie w przypadku unieważnienia nowe pokolenia. Nie powinno być już wymagane używanie klasy .collectCollect w usłudze
Flow<PagingData>
, ale nadal jest to zdecydowanie zalecane. (I0b2b5, b/177351336, b/195028524).loadStateFlow
i.addLoadStateListener
w interfejsach API prowadzącego prezentację nie wysyłaj już nadmiarowo początkowego obiektuCombinedLoadStates
, który zawsze ma stan mediatora ustawiony nanull
, a stany źródła naNotLoading(endOfPaginationReached = false)
. Oznacza to, że:- Jeśli korzystasz z narzędzia RemoteMediator, stany mediatora są zawsze wypełniane.
- Rejestrowanie nowego detektora loadState lub nowego kolektora w
.loadStateFlow
nie będzie już natychmiast emitować bieżącej wartości jeśli nie otrzymała prawdziwego żądaniaCombinedLoadStates
odPagingData
Może się tak zdarzyć, gdy kolektor lub detektor uruchomi się przed przesłaniem atrybutuPagingData
. (I1a748).
Wersja 3.1.0-alfa03
21 lipca 2021 r.
Usługa androidx.paging:paging-*:3.1.0-alpha03
została zwolniona. Wersja 3.1.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
Do Strona PagingSource. Kiedy strona PagingSource.load jest zwracana LoadResult.Nieprawidłowy, stronicowanie spowoduje odrzucenie wczytanych danych i unieważnienie PagingSource. Ten typ zwrotu ma na celu: obsługa potencjalnie nieprawidłowych lub nieaktualnych danych, które mogą zostać zwrócone z bazy danych lub sieci.
Jeśli na przykład bazowa baza danych jest zapisywana w Wartość PagingSource nie jest unieważniona na czas, może zwrócić niespójne wyniki, jeśli jego implementacja zależy od niezmienność zbioru danych, z którego jest wczytywany (np. LIMIT implementacje bazy danych stylu OFFSET). W tym scenariuszu jest to należy sprawdzić unieważnienie po wczytaniu i zwraca błąd LoadResult.Invalid, który powoduje odrzucenie wszystkich oczekujące lub przyszłe żądania wczytywania do tego PagingSource i unieważnić go.
Ten typ zwrotu jest również obsługiwany przez interfejs Paging2 API, który wykorzystuje LivePagedList lub RxPagedList. W przypadku używania parametru PagingSource interfejsów API PagedList strony Paging2, element PagedList zostaje natychmiast odłączony, zatrzymując kolejne próby wczytania danych na tej liście PagedList powoduje unieważnienie strony PagingSource.
LoadResult jest klasą zapieczętowaną, co oznacza, że jest to niekompatybilną ze źródłem, tak aby przypadki użycia były bezpośrednio Wyniki strony PagingSource.load będą musiały obsługiwać parametr LoadResult.Invalid podczas kompilowania danych. Na przykład użytkownicy Kotlin korzystający z funkcji wyczerpująca – kiedy sprawdzić typ zwrotu, trzeba dodać kontrolę dla nieprawidłowego typu. (Id6bd3, b/191806126, b/192013267)
Poprawki błędów
- Wywołania zwrotne unieważnienia dodane przez PagingSource.registerInvalidatedCallback lub DataSource.addInvalidatedCallback (Uzasadnione połączenie zwrotne) jest teraz aktywowane automatycznie, jeśli zostały zarejestrowane w PagingSource / DataSource, który już jest nieprawidłowa. To rozwiązuje problem z wyścigiem, który spowodował spadek stron internetowych sygnalizuje unieważnienie i zatrzymują się po podaniu źródła, które zostało już nieprawidłowe podczas początkowego wczytywania. Dodatkowo unieważnij wywołania zwrotne są teraz prawidłowo usuwane po wywołaniu prawdopodobnie zostanie wywołana najwyżej raz. (I27e69)
- Przesyłanie wartości początkowej zmiennej (InitialPagedList) z nowo utworzonego strumienia PagedList, np. LivePagedListBuilder lub RxPagedListBuilder nie będą już usuwać wcześniej wczytanych danych.
Wersja 3.1.0-alfa02
1 lipca 2021 r.
Usługa androidx.paging:paging-*:3.1.0-alpha02
została zwolniona. Wersja 3.1.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
Dodano interfejsy API detektora i prezentacji onPagesPresented które uruchamiają się natychmiast po zaktualizowaniu prezentowanych stron w interfejsie.
Te aktualizacje są synchroniczne z interfejsem użytkownika, więc możesz wywoływać metody adaptera np. .snapshot lub .getItemCount w celu sprawdzenia stanu po została zastosowana aktualizacja. Zwróć uwagę, że .snapshot() pozostawia wartość jawnie wywoływane, ponieważ wykonanie każdej aktualizacji może być kosztowne.
Aktualizacje stron mogą mieć miejsce w tych sytuacjach:
- Trwa wczytywanie początkowe nowej generacji stron PagingData, niezależnie od tego, czy nowa generacja zawiera jakiekolwiek zmiany prezentowane elementy. na przykład Nowa generacja kończąca wstępne wczytywanie bez aktualizacji, ponieważ lista jest dokładnie taka sama zainicjować to wywołanie zwrotne.
- Strona jest wstawiona, nawet jeśli nie zawiera ona nowych elementy
- Strona jest usuwana, nawet jeśli usunięta strona była pusta (I272c9, b/189999634)
Poprawki błędów
- Uzyskiwanie dostępu do strony PagedList.dataSource z utworzonej wartości początkowej przez LivePagedList lub RxPagedList nie będą już nieprawidłowo wyświetlać IllegalStateException (I96707)
Wersja 3.1.0-alpha01
2 czerwca 2021 r.
Usługa androidx.paging:paging-*:3.1.0-alpha01
została zwolniona. Wersja 3.1.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zajęcia prowadzone przez
paging-rxjava3
są teraz dostępne wandroidx.paging.rxjava3
pakietu w taki sposób, aby nie kolidował zpaging-rxjava2
(Ifa7f6)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że stronicowanie czasami wysyłało inne wiadomości bez operacji do funkcji RecyclerView, które mogą powodować aktywowanie przez określone detektory z wyprzedzeniem. (IC507f, b/182510751)
Treści tłumaczone przez użytkowników zewnętrznych
- Do artefaktu rxjava3 dodano wycofane interfejsy API zgodne z PagedList (Id1ce2, b/182497591)
Paging Compose w wersji 1.0.0
Wersja 1.0.0-alfa20
24 maja 2023 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha20
została zwolniona. Wersja 1.0.0-alfa20 zawiera te zatwierdzenia.
Nowe funkcje
- Funkcja tworzenia stron docelowych obsługuje teraz wyświetlanie podglądu listy fałszywych danych przez utworzenie elementu
PagingData.from(fakeData)
i pakowanie goPagingData
w obiektMutableStateFlow
(np.MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). Jeśli użyjesz tych danych jako danych wejściowych w@Preview
, wywołania funkcjicollectAsLazyPagingItems()
udostępnią ich podglądLazyPagingItems
. (I8a78d, b/194544557)
Poprawki błędów
- Dane z
pager.flow.cachedIn
w pamięci podręcznej, które zostały zebrane w usłudzeLazyPagingItems
, będą teraz dostępne natychmiast po przywróceniu stanu bez konieczności zbierania asynchronicznego. Oznacza to, że dane z pamięci podręcznej będą gotowe do prezentacji od razu po pierwotnej kompozycji, gdy przywrócisz stan. (I97a60, b/177245496)
Wersja 1.0.0-alfa19
3 maja 2023 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha19
została zwolniona. Wersja 1.0.0-alfa19 zawiera te zatwierdzenia.
Obsługa wszystkich układów leniwych
Wcześniej funkcja Paging Compose udostępniała w systemie LazyListScope
niestandardowe rozszerzenia items
i itemsIndexed
, co oznaczało, że nie można było używać tej funkcji w połączeniu z innymi leniwymi układami, takimi jak LazyVerticalGrid
czy HorizontalPager
, ani z innymi niestandardowymi komponentami leniwymi dostępnymi w bibliotekach Wear i TV. Ta nieelastyczność to podstawowa aktualizacja tej wersji.
Aby obsługiwać bardziej leniwe układy, musieliśmy utworzyć interfejsy API w innej warstwie. Zamiast udostępniać niestandardowy interfejs API items
dla każdego układu leniwego, funkcja Paging Compose udostępnia teraz metody rozszerzeń na nieco niższym poziomie w elementach LazyPagingItems
w językach itemKey
i itemContentType
. Te interfejsy API pomagają Ci wdrażać parametry key
i contentType
w standardowych interfejsach API items
, które już istnieją w usługach LazyColumn
i LazyVerticalGrid
, a także ich odpowiedniki w interfejsach API, takich jak HorizontalPager
. (Ifa13b, Ib04f0, b/259385813)
Oznacza to, że obsługa kolumny 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 korzystania z nowych interfejsów API znajdziesz w przykładach.
Te zmiany wydłużą przykłady LazyColumn
i LazyRow
o kilka wierszy, ale zauważyliśmy, że spójność wszystkich lenich układów jest ważnym czynnikiem dla osób korzystających od tej pory z funkcji Paging Compose. Z tego powodu dotychczasowe rozszerzenia do LazyListScope
zostały wycofane. (I0c459, I92c8f, b/276989796)
Zmiany interfejsu API
- Aby ułatwić migrację do nowych interfejsów API, funkcje rozszerzeń
items
iitemsIndexed
w systemieLazyListScope
obsługują teraz parametrcontentType
, co odzwierciedla obsługę nowych interfejsów API. (Ib1918, b/255283378)
Aktualizacje zależności
- Zależność strony Tworzenie stron zmieniła się z Compose 1.0.5 na Compose 1.2.1. (Ib1918, b/255283378)
Wersja 1.0.0-alfa18
8 lutego 2023 r.
Pakiet androidx.paging:paging-compose:1.0.0-alpha18
został udostępniony bez zmian. Wersja 1.0.0-alfa18 zawiera te zatwierdzenia.
Wersja 1.0.0-alfa17
24 października 2022 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha17
została zwolniona. Wersja 1.0.0-alfa17 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę niestandardowego elementu
CoroutineContext
podczas wywoływania usługicollectLazyPagingItems
. (I7a574, b/243182795, b/233783862)
Wersja 1.0.0-alfa16
10 sierpnia 2022 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha16
została zwolniona. Wersja 1.0.0-alfa16 zawiera te zatwierdzenia.
Nowe funkcje
- Stronocjonowanie udostępnia teraz logi za pomocą klasy
LazyPagingItems
, aby udostępniać informacje na potrzeby debugowania zebrane z PagingData. - Logi można włączyć za pomocą polecenia
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
. ([b/235527159}(https://issuetracker.google.com/issues/235527159))
Poprawki błędów
- Naprawiono brakujący błąd konstruktora
PagingDataDiffer
w przypadku używaniapaging-compose:1.0.0-alpha15
zpaging-common:3.1.1
lub starszymi wersjami.(b/235256201,b/239868768)
Wersja 1.0.0-alfa15
1 czerwca 2022 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha15
została zwolniona. Wersja 1.0.0-alfa15 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano konstruktory dla interfejsów
PagingDataAdapter
iAsyncPagingDataDiffer
, które akceptująCoroutineContext
zamiastCoroutineDispatcher
. (Idc878).
Poprawki błędów
LazyPagingItems
ustawia teraz dla początkowego zdarzenialoadState
odświeżenieLoadState.Loading
. (I55043, b/224855902)
Wersja 1.0.0-alfa14
13 października 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha14
została zwolniona. Wersja 1.0.0-alfa14 zawiera te zatwierdzenia.
Wersja 1.0.0-alfa13
29 września 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha13
została zwolniona. Wersja 1.0.0-alfa13 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja
LazyPagingItems.snapshot()
została zastąpiona właściwościąLazyPagingItems.itemSnapshotList
(Ie2da8) - Usunięto wycofaną zasadę
LazyPagingItems.getAsState()
(Ie65e4)
Wersja 1.0.0-alfa12
21 lipca 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha12
została zwolniona. Wersja 1.0.0-alfa12 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Parametry
items(lazyPagingItems)
iitemsIndexed(lazyPagingItems)
używane do łączenia stronicowania z zasadąLazyColumn/Row
akceptują teraz parametr klucza opcji, który umożliwia określenie klucza stabilnego 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-alfa11
30 czerwca 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha11
została zwolniona. Wersja 1.0.0-alfa11 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha10
2 czerwca 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha10
została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.
Wersja 1.0.0-alpha09
18 maja 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha09
została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.
Poprawki błędów
- LazyPagingItems Można teraz obserwować parametry itemCount i metodę pobierania elementów, co umożliwia korzystanie z nich także w LazyVerticalGrid (Ie2446, b/171872064, b/168285687)
Zgodność podczas tworzenia wiadomości
- Usługa
androidx.paging:paging-compose:1.0.0-alpha09
jest zgodna tylko z funkcją tworzenia wiadomości w wersji1.0.0-beta07
i nowszych.
Wersja 1.0.0-alpha08
24 lutego 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha08
została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.
Aktualizacja umożliwia integrację z funkcją tworzenia wiadomości w wersjach 1.0.0-beta01.
Wersja 1.0.0-alpha07
10 lutego 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.
Zaktualizowano do integracji z funkcją tworzenia wiadomości w wersji alfa.
Wersja 1.0.0-alpha06
28 stycznia 2021 roku
Usługa androidx.paging:paging-compose:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.
Poprawki błędów
Aktualizacja jest zgodna z wersją 1.0.0-alfa11.
Wersja 1.0.0-alpha05
13 stycznia 2021 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Aktualizacja jest zgodna z wersją 1.0.0-alfa10.
Wersja 1.0.0-alpha04
16 grudnia 2020 roku
Usługa androidx.paging:paging-compose:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano właściwości wygody,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
: przejście tylko zLoading
naNotLoading
gdy stan mediatora i obciążenia źródła ma wartośćNotLoading
, Zastosowano aktualizację zdalną. (I65619)
Wersja 1.0.0-alpha03
Grudzień 2, 2020
Usługa androidx.paging:paging-compose:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.
- Zaktualizowano, aby odpowiadała wersji 1.0.0-alfa08.
Wersja 1.0.0-alpha02
11 listopada 2020 roku
Usługa androidx.paging:paging-compose:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano metody
.peek()
,.snapshot()
,.retry()
i.refresh()
doLazyPagingItem
, które udostępniają te same funkcje co wAsyncPagingDataDiffer
/PagingDataAdapter
(Iddfe8, b/172041660)
Wersja 1.0.0-alpha01
28 października 2020 r.
Usługa androidx.paging:paging-compose:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
Artefakt paging-compose
zapewnia integrację między biblioteką stronicowania 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.
Usługa androidx.paging:paging-*:3.0.1
została zwolniona. Wersja 3.0.1 zawiera te zatwierdzenia.
Poprawki błędów
- Uzyskanie dostępu do
PagedList.dataSource
z wartości początkowej wygenerowanej przezLivePagedList
lubRxPagedList
nie będzie już powodowało błędnego zgłoszenia wyjątku (I96707).
Wersja 3.0.0
Wersja 3.0.0
5 maja 2021 roku
Usługa androidx.paging:paging-*:3.0.0
została zwolniona. Wersja 3.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 3.0.0
Większość obecnych interfejsów API ze strony Paging 2.x.x została wycofana i zastąpiona nowymi interfejsami Paging 3 API, aby wprowadzić te ulepszenia:
- Pierwsza klasa obsługa współrzędnych i przepływu Kotlin
- Pomoc w anulowaniu
- Wbudowane sygnały o stanie wczytywania i błędach
- Funkcja ponowienia próby i odświeżenie
- Wszystkie 3 podklasy DataSource zostały połączone w ujednoliconą klasę PagingSource
- niestandardowe przekształcenia stron, w tym wbudowane narzędzie do dodawania separatorów;
- Wczytuję nagłówki i stopki stanów
Wersja 3.0.0-rc01
21 kwietnia 2021 r.
Usługa androidx.paging:paging-*:3.0.0-rc01
została zwolniona. 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 inne wiadomości bez operacji do funkcji RecyclerView, które mogą powodować aktywowanie przez określone detektory z wyprzedzeniem. (IC507f, b/182510751)
Wersja 3.0.0-beta03
24 marca 2021 r.
Usługa androidx.paging:paging-*:3.0.0-beta03
została zwolniona. Wersja 3.0.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Zmieniliśmy sposób obsługi obiektów zastępczych, gdy lista jest załadowano ponownie, aby zapobiec nieoczekiwanym skokom w elemencie RecyclerView. Zobacz NullPaddedDiffing.md, aby dowiedzieć się więcej. (If1490, b/170027529, b/177338149)
- Różne kreatory PagedList (stara ścieżka zgodności) nie wywołują już nieprawidłowo synchronicznie elementu
DataSource.Factory.create()
w wątku głównym po wywołaniu funkcji.build()
. (b/182798948)
Wersja 3.0.0-beta02
10 marca 2021 r.
Usługa androidx.paging:paging-*:3.0.0-beta02
została zwolniona. Wersja 3.0.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozszerzenia Rx3 są teraz prawidłowo rozpowszechniane
@ExperimentalCoroutinesApi
Wymaganie dotyczące akceptacji. Wcześniej zaznaczono w metodzie@get
, która jest ignorowana przez kompilatora Kotlin na https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
Poprawki błędów
- Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
- Naprawiono błąd, przez który
PagingState
zawsze miał wartośćnull
, gdy zdalne odświeżanie. - Naprawiliśmy błąd polegający na tym, że puste strony zwracane przez PagingSource mogły uniemożliwiać ponowne pobranie strony ze względu na wykonanie funkcji
prefetchDistance
, przez co strony mogły się zawieszać.
Wersja 3.0.0-beta01
10 lutego 2021 r.
Usługa androidx.paging:paging-*:3.0.0-beta01
została zwolniona. Wersja 3.0.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Otoki Rx2 i Rx3 udostępniają teraz eksperymentalną adnotację
zależy od tego, Jeśli używasz kodów kompatybilnych Rx w paging-rxjava2 lub
paging-rxjava3 musisz teraz dodawać adnotacje do użytkowania za pomocą
@OptIn(ExperimentalCoroutinesApi::class)
(Ib1f9d)
Poprawki błędów
- Naprawiliśmy błąd
IndexOutOfBoundsException: Inconsistency detected
, który pojawiał się czasem w przypadku korzystania z interfejsów API w wersji 2DataSource
za pomocą ścieżek zgodności. - Wywołanie
isInvalid
podczas inicjowania obiektuDataSource
, gdy jest używane za pomocą ścieżek zgodności, jest teraz prawidłowo uruchamiane w FetchDispatcher, a nie w wątku głównym. Naprawia to problemIllegalStateException
z powodu dostępu do bazy danych w wątku głównym podczas korzystania z implementacjiPagingSource
w pokoju.
Wersja 3.0.0-alfa13
27 stycznia 2021 r.
Usługa androidx.paging:paging-*:3.0.0-alpha13
została zwolniona. Wersja 3.0.0-alfa13 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Implementacja
PagingSource.getRefreshKey
nie jest już opcjonalna. jest to funkcja abstrakcyjna bez domyślnej implementacji. Migrowani użytkownicy mogą nadal zwracać ustawienia domyślne implementacji, która zwracanull
, alegetRefreshKey()
powinna stosować rzeczywistą implementację, która zwraca klucz na podstawie bieżąca pozycja przewijania, która umożliwia dalsze ładowanie stron według strony na środku widocznego obszaru przezPagingState.anchorPosition
, jeśli jak to tylko możliwe. (I4339a) InvalidatingPagingSourceFactory
to teraz klasa końcowa (Ia3b0a)- Zezwalaj na konfigurowanie separatora terminala (nagłówka / stopki)
z dodatkowym opcjonalnym parametrem SeparatorType. Obie
opcje to:
FULLY_COMPLETE
– obecne zachowanie; Poczekaj na wygenerowanie zarówno PagingSource, RemoteMediator do oznaczenia końca strony docelowej (endOfPaginationReached) przed dodaniem terminala separatory. Jeśli nie jest używany element RemoteMediator, wartość zdalnego loadState to zignorowano. Przydaje się to przede wszystkim, gdy chcesz wyświetlać tylko sekcję separatorów po pełnym wczytaniu sekcji, włącznie z pobieraniem z źródło zdalne, np. sieć.SOURCE_COMPLETE
– poczekaj tylko na oznaczenie strony PagingSource endOfPaginationReached, nawet jeśli jest używany obiekt RemoteMediator. Dzięki temu nagłówki i stopki, które mają być zsynchronizowane synchronicznie z początkowym wczytywania, przez co użytkownicy nie muszą przewijać strony, by zobaczyć terminal. separatory. (Ibe993, b/174700218)
Poprawki błędów
- Usunięto rzadki wyciek pamięci, który występował, gdy element PagingSource przed rozpoczęciem ładowania modułu pobierania stron. (I9606b, b/174625633)
Wersja 3.0.0-alfa12
13 stycznia 2021 r.
Usługa androidx.paging:paging-*:3.0.0-alpha12
została zwolniona. Wersja 3.0.0-alfa12 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nieprawidłowa klasa invalidatingPagingSourceFactory nie jest już klasą abstrakcyjną ponieważ nigdy nie mieliśmy żadnych metod abstrakcyjnych. (I4a8c4).
- Dodano przeciążenie funkcji .cachedIn(), która akceptuje model ViewModel. zamiast Lifecycle lub CoroutineScope w przypadku użytkowników Javy. (I97d81, b/175332619)
- Zezwalaj obiektom wywołującym Javę na wykonywanie operacji przekształcania PagingData w
w sposób asynchroniczny przez akceptowanie wykonawcy do operatora przekształcenia
. Wszystkie operatory przekształcenia -Synchronizuj mają sufiks -Sync
teraz, a użytkownicy Kotlin Coroutine będą musieli zidentyfikować
wywołując funkcję rozszerzenia, która zamiast tego akceptuje blok zawieszenia.
Wszystkie operatory przekształcania PagingData zostały przeniesione do rozszerzeń
w statycznej klasie PagingDataTransforms. Użytkownicy języka Java muszą:
Wywołuj je za pomocą statycznych pomocników, np.
PagingDataTransforms.map(pagingData, transform)
W przypadku użytkowników Kotlin składnia jest taka sama, ale trzeba zaimportować plik . (If6885, b/172895919)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że funkcja
RemoteMediator.load()
nie była wywoływana podczasadapter.refresh()
, jeśli został już osiągnięty koniec podziału na strony.
Wersja 3.0.0-alfa11
16 grudnia 2020 roku
Usługa androidx.paging:paging-*:3.0.0-alpha11
została zwolniona. Wersja 3.0.0-alfa11 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę zapisanych stanów w tych podstawowych przypadkach użycia (pełna obsługa, zwłaszcza w przypadku przypadku źródłowego z poszczególnymi warstwami, nadal jest rozwijana):
- przepływ jest zapisany w pamięci podręcznej, a aplikacja nie jest przerywana (np.przepływ jest zapisywany w modelu widoku w pamięci podręcznej, a aktywność jest odtwarzana w trakcie procesu).
- źródło stronicowania jest liczone, obiekty zastępcze są włączone, a układ nie pojawiają się w kolejności.
Zmiany interfejsu API
PagingSource.getRefreshKey()
to teraz stabilny interfejs API (I22f6f, b/173530980)PagingSource.invalidate
nie jest już funkcją otwartą. Jeśli w celu otrzymywania powiadomień o unieważnieniu, rozważ wywołanie rejestrować nieprawidłową funkcję wywołania zwrotnego zamiast zastępowania wartości invalidate. (I628d9, b/173029013, b/137971356)- Pager ma teraz jeden eksperymentalny konstruktor za pomocą zwykłych konstruktorów, zamiast ujawniać eksperymentalne interfejsy API nieeksperymentalny publiczny interfejs API za pomocą adnotacji umożliwiającej wyrażenie zgody. (I9dc61, b/174531520)
- Zaktualizowano właściwości wygody,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
,CombinedLoadStates.append
: przejście tylko zLoading
naNotLoading
gdy stan mediatora i obciążenia źródła ma wartośćNotLoading
, Zastosowano aktualizację zdalną. (I65619) Usunięto parametr LoadParams.pageSize (został już usunięty wycofane). Zalecamy użycie elementu
LoadParams.loadSize
w PagingSource.LoadParams.loadSize
jest zawsze równaPagingConfig.pageSize
z wyjątkiem wywołania wczytywania początkowego, w którym jest ono równePagingConfig.initialLoadSize
Jeśli testujesz źródło danych Paging2 bez użycia pagera lub PagedList,
pageSize
może nie pasować do wartościPagingConfig.pageSize
, jeśli ustawiasz też:initialLoadSize
. Jeśli ważne jest, aby testów, spróbuj użyć Pager/PagedList, który będzie ustawiony wewnętrznie dla metod wczytywania DataSource. (I98ac7, b/149157296)
Poprawki błędów
- Naprawiono błąd spowodowany błędem IllegalStateException, gdy: używając separatorów z ustawioną funkcją PagingConfig.maxSize. (I0ed33, b/174787528)
- Usunięto błąd, przez który stan wczytywania funkcji PREPEND / APPEND nie powodował
natychmiast zaktualizuj do
NotLoading(endOfPaginationReached = true)
po początkowym wczytaniu, jeśli skonfigurowano funkcję RemoteMediator (I8cf5a) - Naprawiliśmy błąd, który powodował, że interfejsy API po stronie prowadzącego, takie jak .snapshot() czy .peek(), zwracały poprzednią (nieaktualną listę) w ramach aktualizacji ListUpdateCallback.
- Naprawiliśmy błąd, który powodował, że operatory separatorów nie dodawały nagłówków ani stopek, gdy były używane z funkcją RemoteMediator.
- Usunęliśmy błąd, przez który po aktualizacji parametru LoadState na wartość NotLoading for RemoteMediator blokował się on w stanie wczytywania.
- Naprawiliśmy błąd, który powodował, że interfejs API zgodności Paging2.0 (
.asPagingSourceFactory()
) mógł powodować inicjowanie kopii zapasowejDataSource
w niewłaściwym narzędziu CoroutineDispatcher. Pozwala to rozwiązać awarie i możliwe przypadki błędów ANR, zwłaszcza w przypadku korzystania z bieżącej implementacji PagingSource w pokoju, która korzysta z tej ścieżki zgodności.
Wersja 3.0.0-alfa10
Grudzień 2, 2020
Usługa androidx.paging:paging-*:3.0.0-alpha10
została zwolniona. Wersja 3.0.0-alfa10 zawiera te zatwierdzenia.
Zmiany interfejsu API
Wycofane interfejsy API
dataRefreshFlow
idataRefreshListener
zostały usunięte ponieważ są one nadmiarowe w przypadku aktualizacji loadStateFlow / Detektor. Dla: Jego odpowiednikiem w przypadku migracji jest:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Poprawki błędów
- endOfPaginationReached for RemoteMediator:
REFRESH
teraz poprawnie propagować do aktualizacji LoadState i uniemożliwiać zdalneAPPEND
orazPREPEND
od aktywacji. (I94a3f, b/155290248) - Prezentowanie pustej listy z powodu pustej strony początkowej lub
intensywne filtrowanie nie będzie już uniemożliwiać uruchomienia strony
PREPEND
lubAPPEND
. (I3e702, b/168169730) - Rozwiązaliśmy problem, który powodował, że nie można było nawiązać połączenia z numerem
getRefreshKey
w kolejnych generacjach PagingSource, gdy unieważnienia występują szybko. (I45460, b/170027530)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano nową klasę abstrakcyjną invalidatingPagingSourceFactory
za pomocą interfejsu API
.invalidate()
, który przekazuje informację o unieważnieniu do wszystkich PagingSources jego emisji. Dzięki @claraf3! (IE71fc, b/160716447)
Znane problemy
- Nagłówki i stopki przekształcenia .insertSeparators() mogą nie pojawiać się od razu, gdy korzystasz z usługi RemoteMediator b/172254056.
- Korzystanie z narzędzia RemoteMediator może spowodować zablokowanie obiektu zdalnego
LoadState
w przypadku unieważnienia i zakończenia procesuPagingSource.load(LoadParams.Refresh(...))
przed zwróceniem wartości b/173717820 przezRemoteMediator.load()
.
Wersja 3.0.0-alpha09
11 listopada 2020 roku
Usługa androidx.paging:paging-*:3.0.0-alpha09
została zwolniona. Wersja 3.0.0-alfa09 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Całkowicie wycofaj metody dataRefreshFlow / detektora ze Zastąp klauzulą. (I6e2dd)
Poprawki błędów
- Poprawiono zgłaszanie żądania
IllegalArgumentException
w przypadku używania separatora z funkcją RemoteMediator, które powodowało wywołanie unieważnienia, gdy ładowanie zdalne, które zwracałoby koniec strony (I3a260)
Wersja 3.0.0-alpha08
28 października 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha08
została zwolniona. Wersja 3.0.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Warianty usługi
DataSource.InvalidatedCallback
w języku Kotlin / Java połączono, aktywując konwersje SAM w Kotlin za pomocą (dostępny w wersji Kotlin 1.4). Naprawiliśmy również błąd polegający na tym, że wariant kotlin nieważnych wywołań zwrotnych nie został wywołany po przekształceniu do.map
lub.mapByPage
. (I1f244, b/165313046)
Poprawki błędów
- Interakcja strony z ViewPager została znacznie ulepszona. W szczególności działanie stron docelowych nie będzie już anulować wywołania funkcji
RemoteMediator#load
z powodu unieważnienia strony. Nie będzie też już wysyłać żądania wczytywania/dodania na początku, jeśli jest wymagane ODŚWIEŻ, dopóki żądanie ODŚWIEŻ nie zakończy się powodzeniem. (I6390b, b/162252536) - Sprawdzanie lint interfejsu API dla MissingGetterMatchingBuilder jest włączone dla androidx (I4bbea, b/138602561)
- Naprawiono błąd, który powodował, że
.withLoadState*
pomocników typuConcatAdapter
awaria z powodu powiadomienia RecyclerView z wątku w tle (I18bb5, b/170988309) - Naprawiliśmy błąd polegający na tym, że ładowanie bardzo małej, niepustej strony czasami uniemożliwiało prawidłowe uruchamianie wczytywania z wyprzedzeniem.Iffda3 b/169259468
Wersja 3.0.0-alpha07
1 października 2020 roku
Usługa androidx.paging:paging-*:3.0.0-alpha07
została zwolniona. Wersja 3.0.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Asynchroniczne operatory stronicowania oparte na Guavie akceptują teraz wykonawcy jako parametr, by kontrolować kontekst wykonywania. (Id4372).
Poprawki błędów
- Poprawiono wyjątek IndexOutOfBounds w obiekcie RemoteMediator na rasę. (I00b7f, b/165821814)
- Naprawiono warunek wyścigu w DataSource -> Konwersja PagingSource, która może spowodować zignorowanie sygnałów unieważnienia z DataSource na podstawie wyniku PagingSource.
- Rozwiązaliśmy problem z logiką pobierania strony, który czasami powodował, że nie mogła odbierać nowych generacji obiektu PagingSource do czasu wywołania funkcji PagingDataAdapter.refresh()
- Naprawiono błąd, który powodował utratę pozycji przewijania w przypadku użycia DataSource przekonwertowanego na PagingSource (np. generowany przez Room) w połączeniu z funkcją RemoteMediator
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy użytkownikowi @simonschiller za dodanie operatorów transformacji asynchronicznej RxJava2, RxJava3 i opartych na Guavie do strony PagingData.
Wersja 3.0.0-alpha06
Wrzesień 2, 2020
Usługa androidx.paging:paging-*:3.0.0-alpha06
została zwolniona. Wersja 3.0.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
UnsupportedOperationException
z bardziej zrozumiałym przekazem brak obsługi stabilnych identyfikatorów jest teraz zgłaszany zawsze, FunkcjaPagingDataAdapter.setHasStableIds
jest wywoływana. (Ib3890, b/158801427)
Poprawki błędów
- InsertSeparators nie odfiltrowuje już pustych stron, co pozwala pobiera z wyprzedzeniem odległość, która ma być przestrzegana przez prowadzącego nawet w przypadku, wstawionych jest wiele pustych stron. (I9cff6, b/162538908)
Wersja 3.0.0-alpha05
19 sierpnia 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha05
została zwolniona. Wersja 3.0.0-alfa05 zawiera te zatwierdzenia.
Poprawki błędów
- Obecnie strony poprawnie pobierają strony nawet wtedy, gdy wyświetlane dane są mocno filtrowane
- Zwrócenie
LoadResult.Error
do ponownego wczytywania nie będzie już powodować, że dostęp elementu będzie nieprawidłowo wywoływany ponowienie próby
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy Klara F za pomoc w porządkowaniu testów. (549612)
Wersja 3.0.0-alfa04
5 sierpnia 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha04
została zwolniona. Wersja 3.0.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano interfejs
peek()
API do interfejsówAsyncPagingDataDiffer
orazPagingDataAdapter
, aby zezwolić na dostęp do prezentowanych danych bez użycia strony aktywatora . (I38898, b/159104197) - Dodano interfejs API
snapshot()
do językówPagingDataAdapter
orazAsyncPagingDataDiffer
, aby umożliwić pobieranie prezentowanych elementów bez które uruchamiają pobieranie strony. (I566b6, b/159104197) - Dodano konstruktor
PagingData.from(List<T>)
, aby zezwolić przedstawianie list statycznych, które można połączyć z ogólnym Przepływ danych stronicowania w celu wyświetlania list statycznych w określonych stanach, np. przed początkowym efektom ODŚWIEŻENIA lub po prostu do testowania przekształceń. (Id134d). - Wycofywanie interfejsów API procesu odświeżania danych / detektora w niezmienionej formie miał na celu wyeksponowanie stanu prezentowanych elementów przy użyciu funkcji REFRESH, ale dzięki ulepszeniu czasu wywołania zwrotnego FlowState / detektora i właściwości itemCount jest nadmiarowy (Ia19f3)
- Dodano kody zgodności RxJava3 dla systemów
PagingSource
iRemoteMediator
(I49ef3, b/161480176)
Poprawki błędów
PositionalDataSource
zostało przekonwertowane naPagingSource
przez Pomocnik typutoPagingSourceFactory
, w tymPagingSource
wygenerowany przez pokój prawidłowo oznaczają swoje umiejętności skakania. (I3e84c, b/162161201)- Naprawiono błąd polegający na tym, że korzystanie z synchronicznego wariantu requestData
może prowadzić do wyścigu powodującego wyścig
ClosedSendChannelException
(I4d702, b/160192222)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy Zac Sweers za dodanie kodów zgodności RxJava3 w imieniu platformy Slack. (I49ef3, b/161480176)
Wersja 3.0.0-alpha03
22 lipca 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha03
została zwolniona. Wersja 3.0.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Konstruktor strony PagingState jest teraz publiczny, co powinno ułatwić testowanie implementacji getRefreshKey() (I8bf15).
- Ukryto warianty funkcji mapy Kotlin DataSource z Javy w niejednoznaczności między wariantami oryginału i kotlinem. (If7b23, b/161150011)
- Nadmiarowe interfejsy API, zaprojektowane jako udogodnienia dla użytkowników Kotlin, zostało oznaczone @JvmSynthetic (I56ae5)
- Dodano przeciążenia konstruktora LoadResult.Page Domyślna wartość opcji itemsBefore i itemsAfter to COUNT_UNDEFINED (I47849)
- Istniejące operatory stronicowania akceptują metody zawieszania oraz wprowadziliśmy nowe funkcje mapSync, FlaMapSync i filterSync, niezawieszające z operatorami Java. Dotychczasowe metody przekształcania przeniesiono do funkcji rozszerzeń, więc użytkownicy Kotlin będą musieli je zaimportować. (I34239, b/159983232)
Poprawki błędów
- Źródła stron dla sal (i PositionalDataSource) będą teraz separatora wiodącego na pierwszej stronie, więc użytkownik nie muszą przewijać ekranu, aby go pokazać. (I6f747, b/160257628)
- Teraz dostęp do obiektów zastępczych poprawnie aktywuje ładowanie strony PagingSource do chwili zwracana jest strona, która spełnia wymagany indeks po przekształceniu przez PagingData.filter() (I95625, b/158763195)
- Naprawiono błąd, który czasem przewijał się po Strona PagingSource zwraca błąd, co może uniemożliwić działanie strony PagingDataAdapter.retry() nie podejmować ponownych prób. (I1084f, b/160194384)
- Rozwiązaliśmy problem, który powodował, że dostęp do elementu po upuszczeniu strony mógł być nie mogą ładować stron, mimo że dostęp do nich mieścił się w zakresie wstępnego pobierania (Ie95ae, b/160038730)
- Ustawienie strony PagingConfig.maxSize nie powoduje już włączenia obiektów zastępczych po wystąpieniu zdarzenia upadku (I2be29, b/159667766)
Wersja 3.0.0-alpha02
24 czerwca 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha02
została zwolniona. Wersja 3.0.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przeciążenia konstruktora
PagingConfig
z typowymi wartościami domyślnymi (I39c50, b/158576040) - Dodano przeciążenia dla konstruktorów
PagingDataAdapter
iAsyncPagingDataDiffer
z typowymi wartościami domyślnymi (Ie91f5) - Interfejsy API adaptera:
dataRefreshFlow
idataRefreshListener
przekazują teraz wartość logiczną wskazującą, czyPagingData
jest pusty (I6e37e, b/159054196) - Dodano interfejsy API RxJava i Guava do interfejsu RemoteMediator – RxRemoteMediator i ListenableFutureRemoteMediator.
- Dodano pomocniki w PagingState, aby zapewnić typowy dostęp do elementów takich jak
isEmpty()
ifirstItemOrNull()
(I3b5b6, b/158892717)
Poprawki błędów
- Pager sprawdza teraz, czy strona PagingSource jest używana ponownie w fabryce, aby zapobiec przypadkowemu ponownemu użyciu nieprawidłowych zasobów PagingSource, które spowodowały niejasny błąd (I99809, b/158486430).
- Błędy działania funkcji RemoteMediator REFRESH nie uniemożliwiają załadowania strony PagingSource (I38b1b, b/158892717)
- Niezawieszona wersja
submitData
nie powoduje już awarii z powodu równoczesnego zbierania danych w kilku obiektachPagingData
, gdy wywołano po zawieszeniu wersjisubmitData
. (I26358, b/158048877) - Naprawiono „nie można zbierać 2 razy z poziomu pagera”. wyjątek, który może wystąpić po zmianie konfiguracji (I58bcc, b/158784811)
Wersja 3.0.0-alpha01
10 czerwca 2020 r.
Usługa androidx.paging:paging-*:3.0.0-alpha01
została zwolniona. Wersja 3.0.0-alfa01 zawiera te zatwierdzenia.
Zaktualizowaliśmy bibliotekę stron internetowych do wersji 3.0, aby udostępnić kilka nowych ważnych funkcji.
Nowe funkcje w wersji 3.0
- Pierwsza klasa obsługa współprogramów Kotlin i Flow.
- Obsługa wczytywania asynchronicznego z funkcjami zawieszania współrzędnych, elementami podstawowymi RxJava i Guava ListenableFuture.
- Wbudowane sygnały o stanie wczytywania i błędach do projektowania elastycznego interfejsu użytkownika, w tym do ponawiania prób i odświeżania.
- Ulepszenia warstwy repozytorium
- Uproszczony interfejs źródła danych
- Uproszczony podział na strony sieci i bazy danych
- Pomoc w anulowaniu
- Ulepszenia warstwy prezentacji
Znane problemy
- 3 dokumenty javadocs na potrzeby stronowania nie są jeszcze dostępne. W międzyczasie skorzystaj z przewodników, do których linki znajdują się powyżej, lub z dokumentów Kotlin. (B/158614050)
Wersja 2.1.2
Wersja 2.1.2
18 marca 2020 r.
Usługa androidx.paging:paging:2.1.2
została zwolniona. Wersja 2.1.2 zawiera te zatwierdzenia w porównaniu do wersji 2.1.0.
Poprawki błędów
- W rzadkich przypadkach, gdy konwertujesz pozycję podczas unieważniania, popraw błąd przez
IndexOutOfBoundsException
.
Problem z wydaniem
Wersja strony
2.1.1
została nieprawidłowo opublikowana z nieprawidłowo skonfigurowanej gałęzi, przez co częściowo zaimplementowane interfejsy API i funkcje pojawią się w przyszłej wersji.Strona
2.1.2
zawiera poprawkę ukierunkowaną na obciążenie, którą oryginalnie opublikowano w wersji 2.1.1, ale tym razem została ona prawidłowo wybrana jako wersja 2.1.0. Jeśli korzystasz obecnie z wersji 2.1.1, zdecydowanie zalecamy przejście na tę wersję.
Wersja 2.1.1
Wersja 2.1.1
18 grudnia 2019 r.
Usługa androidx.paging:paging-*:2.1.1
została zwolniona. Wersja 2.1.1 zawiera te zatwierdzenia.
Poprawki błędów.
- Ciągłe wczytywanie początkowe z PositionalDataSources jest teraz wyśrodkowane na ostatnim dostępie, gdy obiekty zastępcze są wyłączone.
Wersja 2.1.0
Wersja 2.1.0
25 stycznia 2019 r.
Strona 2.1.0
została zwolniona bez zmian od 2.1.0-rc01
.
Wersja 2.1.0-rc01
6 grudnia 2018 r.
Strona 2.1.0-rc01
została zwolniona bez zmian od 2.1.0-beta01
.
Wersja 2.1.0-beta01
1 listopada 2018 r.
Strona 2.1.0-beta01
została zwolniona bez zmian od 2.1.0-alpha01
.
Wersja 2.1.0-alpha01
12 października 2018 r.
Formatowanie 2.1.0-alpha01
obejmuje 2 główne dodatki – pomijanie stron oraz biblioteki rozszerzeń KTX dla każdego artefaktu – a także kilka innych zmian w interfejsie API i poprawki błędów.
Zmiany interfejsu API
- Dodano
PagedList.Config.Builder.setMaxSize()
w przypadku ograniczenia liczby wczytywanych elementów w pamięci. - Dodano aplikację
androidx.paging.Config()
jako alternatywę dla usługi Kotlin dla aplikacjiPagedList.Config.Builder
- Dodano aplikację
androidx.paging.PagedList()
jako alternatywę dla usługi Kotlin dla aplikacjiPagedList.Builder
- Dodano aplikację
DataSourceFactory.toLiveData()
jako alternatywę dla usługi Kotlin dla aplikacjiLivePagedListBuilder
- Dodano
DataSourceFactory.toObservable()
itoFlowable()
jako alternatywne wersje Kotlin dla aplikacjiRxPagedListBuilder
- Dodano element
AsyncPagedListDiffer.addPagedListListener()
do słuchania przy zamienianiu elementu PagedList. b/111698609 - Dodano wariant
PagedListAdapter.onCurrentListChanged()
, który przekazuje starą i nową listę; poprzedni wariant został wycofany. - Dodaliśmy
PagedListAdapter/AsyncPagedListDiffer.submitList()
warianty, które przyjmują dodatkowe wywołanie zwrotne, które jest wywoływane, jeśli wyświetli się lista stronicowana po różnicy. Pozwala to zsynchronizować zamianę 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
- Usunięto warunek wyścigu podczas różnicowania w przypadku ponownego wykorzystania list. b/111591017.
PagedList.loadAround()
wysyła terazIndexOutOfBoundsException
, gdy indeks jest nieprawidłowy. Wcześniej mógł się on zawiesić z niejasnym innym wyjątkiem.- Rozwiązaliśmy problem, który powodował, że bardzo mały rozmiar wczytywanych elementów przy niezmienionych danych uniemożliwiał dalsze wczytywanie strony b/113122599.
Wersja 2.0.0
Wersja 2.0.0
1 października 2018 r.
Udostępniamy stronę 2.0.0
z jednym poprawką błędu.
Poprawki błędów
- Rozwiązaliśmy problem, który mógł występować przy bardzo szybkim przewijaniu przy użyciu elementów
PositionalDataSource
i obiektów zastępczych b/114635383.
Wersja 2.0.0-beta01
2 lipca 2018 r.
Poprawki błędów
- Poprawione znikanie treści w niektórych przypadkach dodawanych na początku (obiekty zastępcze wyłączone, PositionalDataSource) b/80149146
- (Już opublikowana w wersji
1.0.1
) Naprawiono awarie, które powodowały problemy z sygnaturą zdarzeń dotyczących ruchu wPagedListAdapter
iAsyncPagedListDiffer
. b/110711937
Zależności sprzed AndroidaX
W przypadku wersji stronicowania starszych niż AndroidX, które obowiązują w następujących wersjach, 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.
Publikowanie stron 1.0.1
z pojedynczym błędem w runtime
. Dla stabilności zdecydowanie zalecamy użycie 1.0.1
. Udostępniona została również strona strona 1.0.1
w języku RxJava2, która jest taka sama jak 1.0.0-rc1
.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
PagedListAdapter
iAsyncPagedListDiffer
nie sygnalizowały zdarzeń ruchu. b/110711937
RxJava2 w wersji 1.0.0
RxJava2 w wersji 1.0.0-rc1
16 maja 2018 r.
Formatowanie 1.0.0-rc1
w środowisku RxJava2 jest przenoszone do wersji kandydującej bez żadnych zmian w stosunku do początkowej
wersji alfa.
Wersja 1.0.0
Wersja 1.0.0-rc1
19 kwietnia 2018 r. Kandydat do wydania strony
Nie planujemy nowych znanych problemów ani nowych funkcji
Stronokowanie wersji 1.0.0
. Przejdź na wyższą wersję projektów, aby korzystać z 1.0.0-rc1
i
pomóż nam ją przetestować, abyśmy mogli wysłać solidną jak skałę 1.0.0
.
Ta wersja nie zawiera żadnych zmian. Ta wersja jest taka sama jak 1.0.0-beta1
.
Wersja 1.0.0-beta1
5 kwietnia 2018 r.
Funkcja strony będzie dostępna w wersji beta przez krótki czas, zanim stanie się kandydatką do opublikowania.
W przypadku Paging 1.0
nie planujemy dalszych zmian interfejsu API, ponieważ poprzeczka w przypadku jakichkolwiek takich zmian jest bardzo wysoki.
Obsługa stronicowania w wersji alfa RxJava2 jest dostępna jako oddzielny moduł opcjonalny (android.arch.paging:rxjava2:1.0.0-alpha1
)
i będzie tymczasowo wyświetlać się w osobnej wersji, dopóki się nie ustabilizuje.
Ta nowa biblioteka stanowi alternatywę dla języka LivePagedListBuilder
w języku RxJava2, pozwalającą
Observable
i Flowable
, co trwa Scheduler
zamiast Executor
s:
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
- Pole
RxPagedListBuilder
zostało dodane za pomocą nowego artefaktuandroid.arch.paging:rxjava2
.
Zmiany interfejsu API
Zmiany w interfejsie API mające na celu wyjaśnienie roli wykonawców w konstruktorach:
Nazwa
setBackgroundThreadExecutor()
została zmieniona nasetFetchExecutor()
(w:PagedList.Builder
iLivePagedListBuilder
)Zmieniono nazwę z
setMainThreadExecutor()
nasetNotifyExecutor()
(wPagedList.Builder
).
Poprawiono status
PagedList.mCallbacks
użytkownika na prywatny.
Poprawki błędów
Funkcja
LivePagedListBuilder
wyzwala wstępne wczytywanie (PagedList
) określonego wykonawcy, zamiast puli wątków IO na poziomie Arch Komponenty.Usunięto nieprawidłowe działanie w wewnętrznych kodach towarzyszących
DataSource
(stosowanych do implementacjiDataSource.map
, oraz ładowanie z wyłączonym symbolem zastępczymPositionalDataSource
) b/77237534
Wersja 1.0.0-alfa
21 marca 2018 r.
Strona 1.0.0-alpha7
jest udostępniana wraz z cyklami życia 1.1.1
. Wynik działania strony alfa7 zależy od przeniesienia klasy Function
wymienionej powyżej, dlatego musisz zaktualizować zależność lifecycle:runtime
do android.arch.lifecycle:runtime:1.1.1
.
Określanie stron według stron alpha7
ma być planowane do wprowadzenia w wersji beta przed udostępnieniem tej funkcji.
Zmiany interfejsu API
- Obiekty
DataSource.LoadParams
mają teraz konstruktor publiczny, a obiektyDataSource.LoadCallback
są teraz abstrakcyjne. Umożliwia to opakowywanie klasyDataSource
lub bezpośrednie testowanie funkcjiDataSource
za pomocą pozorowanego wywołania zwrotnego. b/72600421 - Mappery dla DataSource i DataSource.Factory
map(Function<IN,OUT>)
umożliwia przekształcanie, zawijanie i dekorowanie wyników wczytywanych przezDataSource
.mapByPage(<List<IN>,List<OUT>>)
umożliwia to samo w przypadku przetwarzania wsadowego (np. jeśli elementy wczytywane z SQL muszą dodatkowo wysyłać zapytania do oddzielnej bazy danych, co można zrobić wsadowo).
- Dodano metodę
PagedList#getDataSource()
jako wygodną metodę b/72611341 - Wszystkie wycofane klasy zostały usunięte z interfejsu API, w tym pozostałości pakietu
recyclerview.extensions
orazLivePagedListProvider
. - Klasa
DataSource.Factory
została zmieniona z interfejsu na klasę abstrakcyjną, aby włączyć funkcje mapy.
Poprawki błędów
- Zmiany w konstruktorach na ostateczne. b/70848565
- Implementacja pokoju
DataSource
została naprawiona, aby umożliwić obsługę zapytań obejmujących wiele tabel – ta poprawka jest dostępna w pokoju 1.1.0-beta1 (patrz wyżej). - Naprawiliśmy błąd polegający na tym, że funkcja
BoundaryCallback.onItemAtEndLoaded
nie była wywoływana dla elementuPositionalDataSource
, jeśli włączone były obiekty zastępcze. łączny rozmiar jest dokładną wielokrotnością rozmiaru strony.
Wersja 1.0.0-alfa5
22 stycznia 2018 r.
Poprawki błędów
- Rozwiązywanie problemów z wczytywaniem strony po wyłączeniu obiektów zastępczych b/70573345
- Dodatkowe logowanie umożliwiające śledzenie błędu IllegalArgumentException b/70360195 (i spekulacyjnej poprawki po stronie pokoju)
- Poprawki przykładowego kodu Javadoc b/70411933, b/71467637