Paging
Tabel ini mencantumkan semua artefak dalam grup androidx.paging
.
Artefak | Rilis Stabil Saat Ini | Kandidat Rilis Berikutnya | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
paging-* | 2.1.2 | - | 3.0.0-beta03 | - |
paging-compose | - | - | - | 1.0.0-alpha08 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Paging, Anda harus menambahkan repositori Google Maven ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi
aplikasi atau modul Anda:
dependencies { def paging_version = "2.1.2" implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx // alternatively - without Android dependencies for testing testImplementation "androidx.paging:paging-common:$paging_version" // For Kotlin use paging-common-ktx // optional - RxJava support implementation "androidx.paging:paging-rxjava2:$paging_version" // For Kotlin use paging-rxjava2-ktx }
Untuk mengetahui informasi tentang penggunaan ekstensi Kotlin, baca dokumentasi ktx.
Atau, Anda dapat mencoba rilis alfa Paging 3.0. Untuk menggunakan Paging
3.0, tambahkan dependensi berikut ke file build.gradle
:
dependencies { def paging_version = "3.0.0-beta02" 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" // Jetpack Compose Integration implementation "androidx.paging:paging-compose:1.0.0-alpha08" }
Untuk informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Paging Compose Versi 1.0.0
Versi 1.0.0-alpha08
24 Februari 2021
androidx.paging:paging-compose:1.0.0-alpha08
dirilis. Versi 1.0.0-alpha08 berisi commit berikut.
Diupdate untuk diintegrasikan dengan Compose 1.0.0-beta01.
Versi 1.0.0-alpha07
10 Februari 2021
androidx.paging:paging-compose:1.0.0-alpha07
dirilis. Versi 1.0.0-alpha07 berisi commit berikut ini.
Diperbarui agar dapat berintegrasi dengan Compose alpha12.
Versi 1.0.0-alpha06
28 Januari 2021
androidx.paging:paging-compose:1.0.0-alpha06
dirilis. Versi 1.0.0-alpha06 berisi commit berikut ini.
Perbaikan Bug
Diperbarui agar bergantung pada Compose 1.0.0-alpha11.
Versi 1.0.0-alpha05
13 Januari 2021
androidx.paging:paging-compose:1.0.0-alpha05
dirilis. Versi 1.0.0-alpha05 berisi commit berikut ini.
Diperbarui agar bergantung pada Compose 1.0.0-alpha10.
Versi 1.0.0-alpha04
16 Desember 2020
androidx.paging:paging-compose:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit berikut ini.
Perbaikan Bug
- Memperbarui properti kemudahan,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
, danCombinedLoadStates.append
agar hanya bertransisi dariLoading
keNotLoading
setelah pemuatan sumber dan mediator dalam statusNotLoading
untuk memastikan pembaruan jarak jauh telah diterapkan. (I65619)
Versi 1.0.0-alpha03
2 Desember 2020
androidx.paging:paging-compose:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit berikut ini.
- Diperbarui agar cocok dengan Compose 1.0.0-alpha08.
Versi 1.0.0-alpha02
11 November 2020
androidx.paging:paging-compose:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit berikut.
Perubahan API
- Menambahkan metode
.peek()
,.snapshot()
,.retry()
, dan.refresh()
keLazyPagingItem
yang menunjukkan fungsi sama yang tersedia diAsyncPagingDataDiffer
/PagingDataAdapter
(Iddfe8, b/172041660)
Versi 1.0.0-alpha01
28 Oktober 2020
androidx.paging:paging-compose:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit berikut ini.
Fitur Baru
Artefak paging-compose
menyediakan integrasi antara Library Paging dan Jetpack Compose. Contoh penggunaan sederhana:
@Composable
@OptIn(ExperimentalLazyDsl::class)
fun ItemsDemo(flow: Flow<PagingData<String>>) {
val lazyPagingItems = flow.collectAsLazyPagingItems()
LazyColumn {
items(lazyPagingItems) {
Text("Item is $it")
}
}
}
Versi 3.0.0
Versi 3.0.0-beta03
24 Maret 2021
androidx.paging:paging-*:3.0.0-beta03
dirilis. Versi 3.0.0-beta03 berisi commit berikut ini.
Perbaikan Bug
- Kami telah mengubah cara penanganan placeholder saat daftar dimuat ulang untuk mencegah lompatan tidak terduga di RecyclerView. Lihat NullPaddedDiffing.md untuk detail selengkapnya. (If1490, b/170027529, b/177338149)
- Berbagai builder PagedList (jalur kompatibilitas lama) tidak lagi salah memanggil
DataSource.Factory.create()
secara sinkron di thread Utama saat.build()
dipanggil. (b/182798948)
Versi 3.0.0-beta02
10 Maret 2021
androidx.paging:paging-*:3.0.0-beta02
dirilis. Version 3.0.0-beta02 berisi commit berikut ini.
Perubahan API
- Ekstensi Rx3 kini memperluas
persyaratan
@ExperimentalCoroutinesApi
Opt-In dengan benar. Sebelumnya ditandai pada metode@get
, yang diabaikan oleh Kotlin Compiler karena: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
Perbaikan Bug
- Menerapkan batasan di penggunaan publik API eksperimental (I6aa29, b/174531520)
- Memperbaiki bug yang menyebabkan
PagingState
selalunull
saat pemuatan ulang jarak jauh dipanggil. - Memperbaiki bug tempat halaman kosong yang ditampilkan oleh PagingSource dapat mencegah Paging agar tidak mengambil data lagi untuk memenuhi
prefetchDistance
yang menyebabkan Paging “terhenti”.
Versi 3.0.0-beta01
10 Februari 2021
androidx.paging:paging-*:3.0.0-beta01
dirilis. Versi 3.0.0-beta01 berisi commit berikut ini.
Perubahan API
- Wrapper Rx2 dan Rx3 sekarang mengekspos anotasi eksperimental
yang menjadi dependensinya. Jika menggunakan wrapper kompatibilitas Rx di paging-rxjava2 atau
paging-rxjava3, Anda sekarang perlu memberi anotasi pada penggunaan dengan
@OptIn(ExperimentalCoroutinesApi::class)
(Ib1f9d)
Perbaikan Bug
- Memperbaiki
IndexOutOfBoundsException: Inconsistency detected
yang terkadang dilempar saat menggunakanDataSource
API v2 melalui jalur kompatibilitas - Panggilan
isInvalid
selama inisialisasiDataSource
saat digunakan melalui jalur kompatibilitas kini diluncurkan dengan benar di fetchDispatcher, bukan di thread utama. Tindakan ini memperbaikiIllegalStateException
karena akses Db di thread utama saat menggunakan implementasiPagingSource
Room.
Versi 3.0.0-alpha13
27 Januari 2021
androidx.paging:paging-*:3.0.0-alpha13
dirilis. Versi 3.0.0-alpha13 berisi commit berikut.
Perubahan API
PagingSource.getRefreshKey
tidak lagi bersifat opsional untuk diimplementasikan, fungsi tersebut sekarang menjadi fungsi abstrak tanpa implementasi default. Memigrasikan pengguna dapat terus mengembalikan implementasi default, yang hanya menampilkannull
, tetapigetRefreshKey()
harus memiliki implementasi nyata yang menampilkan kunci berdasarkan posisi scroll saat ini dari pengguna yang memungkinkan Paging terus memuat di tengah area pandang melaluiPagingState.anchorPosition
jika memungkinkan. (I4339a)InvalidatingPagingSourceFactory
sekarang menjadi class final (Ia3b0a)- Mengizinkan konfigurasi perilaku pemisah terminal (header/footer)
dengan parameter SeparatorType opsional tambahan. Kedua
opsi tersebut adalah:
FULLY_COMPLETE
- perilaku yang ada; menunggu hingga PagingSource dan RemoteMediator menandai endOfPaginationReached sebelum menambahkan pemisah terminal. Jika RemoteMediator tidak digunakan, loadState jarak jauh akan diabaikan. Hal ini berguna terutama jika Anda hanya ingin menampilkan pemisah bagian ketika bagian tersebut dimuat sepenuhnya, termasuk pengambilan dari sumber jarak jauh, misalnya jaringan.SOURCE_COMPLETE
- hanya menunggu PagingSource untuk menandai endOfPaginationReached meskipun RemoteMediator digunakan. Hal ini memungkinkan header dan footer ditampilkan secara sinkron dengan pemuatan awal, sehingga pengguna tidak perlu men-scroll untuk melihat pemisah terminal. (Ibe993, b/174700218)
Perbaikan Bug
- Memperbaiki kebocoran memori yang jarang, yang terjadi ketika PagingSource tidak valid sebelum PageFetcher dapat mulai memuat darinya. (I9606b, b/174625633)
Versi 3.0.0-alpha12
13 Januari 2021
androidx.paging:paging-*:3.0.0-alpha12
dirilis. Versi 3.0.0-alpha12 berisi commit berikut.
Perubahan API
- InvalidatingPagingSourceFactory tidak lagi menjadi class abstrak karena tidak pernah memiliki metode abstrak. (I4a8c4)
- Menambahkan overload .cachedIn() yang menerima ViewModel, bukan Lifecycle atau CoroutineScope untuk pengguna Java. (I97d81, b/175332619)
- Mengizinkan pemanggil Java untuk menggunakan operasi transformasi PagingData
secara asinkron, dengan menerima Executor ke dalam argumen
operator transformasi. Akhiran -Sync pada semua operator transformasi -Sync kini
telah dihapus, dan sebagai gantinya, pengguna Coroutine Kotlin harus membedakan dengan
memanggil fungsi ekstensi yang menerima blok penangguhan.
Semua operator transformasi PagingData telah dipindahkan ke ekstensi
di bawah class PagingDataTransforms. Pengguna Java harus
memanggilnya melalui helper statis, misalnya,
PagingDataTransforms.map(pagingData, transform)
Untuk pengguna Kotlin, sintaksisnya sama, tetapi Anda harus mengimpor fungsi tersebut. (If6885, b/172895919)
Perbaikan Bug
- Memperbaiki bug di mana
RemoteMediator.load()
tidak akan dipanggil selamaadapter.refresh()
jika akhir penomoran halaman sudah tercapai.
Versi 3.0.0-alpha11
16 Desember 2020
androidx.paging:paging-*:3.0.0-alpha11
dirilis. Versi 3.0.0-alpha11 berisi commit berikut ini.
Fitur Baru
- Menambahkan dukungan status tersimpan untuk kasus penggunaan dasar berikut (dukungan penuh, terutama untuk sumber berlapis, masih dalam proses):
- alur di-cache dan aplikasi tidak ditutup (misalnya, alur di-cache dalam model tampilan dan aktivitas dibuat ulang dalam proses)
- sumber paging dihitung, placeholder diaktifkan, dan tata letak tidak diatur.
Perubahan API
PagingSource.getRefreshKey()
sekarang menjadi API stabil (I22f6f, b/173530980)PagingSource.invalidate
tidak lagi menjadi fungsi terbuka. Jika Anda perlu mendapatkan notifikasi saat pembatalan validasi terjadi, sebaiknya panggil metode registerInvalidatedCallback, bukan mengganti pembatalan validasi. (I628d9, b/173029013, b/137971356)- Pager sekarang memiliki satu konstruktor eksperimental bersama dengan konstruktor regulernya, dan bukan membocorkan API eksperimental ke dalam API publik non-eksperimental melalui anotasi keikutsertaan. (I9dc61, b/174531520)
- Memperbarui properti kemudahan,
CombinedLoadStates.refresh
,CombinedLoadStates.prepend
, danCombinedLoadStates.append
agar hanya bertransisi dariLoading
keNotLoading
setelah pemuatan sumber dan mediator dalam statusNotLoading
untuk memastikan pembaruan jarak jauh telah diterapkan. (I65619) LoadParams.pageSize telah dihapus (sudah tidak digunakan lagi). Sebaiknya gunakan
LoadParams.loadSize
di PagingSource Anda.LoadParams.loadSize
selalu sama denganPagingConfig.pageSize
kecuali untuk panggilan pemuatan awal yang sama denganPagingConfig.initialLoadSize
.Jika Anda menguji Paging2 DataSource tanpa menggunakan Pager atau PagedList,
pageSize
mungkin tidak cocok denganPagingConfig.pageSize
jika Anda juga menyetelinitialLoadSize
. Jika penting bagi pengujian Anda, coba gunakan Pager/PagedList saja, yang secara internal akan menyetel PageSize yang benar untuk metode pemuatan DataSource Anda. (I98ac7, b/149157296)
Perbaikan Bug
- Memperbaiki error karena IllegalStateException saat menggunakan pemisah dengan kumpulan PagingConfig.maxSize. (I0ed33, b/174787528)
- Memperbaiki bug saat status pemuatan untuk AWALAN/TAMBAHAN tidak segera
diperbarui menjadi
NotLoading(endOfPaginationReached = true)
setelah pemuatan awal jika RemoteMediator disetel (I8cf5a) - Memperbaiki bug saat API sisi presenter seperti .snapshot(), .peek(), dll., akan menampilkan daftar sebelumnya (yang sudah tidak berlaku) dalam pembaruan ListUpdateCallback.
- Memperbaiki bug saat operator Pemisah tidak akan menambahkan header atau footer ketika digunakan dengan RemoteMediator
- Memperbaiki bug saat pembaruan LoadState ke NotLoading untuk RemoteMediator akan terhenti dalam status Loading
- Memperbaiki bug saat API kompatibilitas Paging2.0,
.asPagingSourceFactory()
, dapat menyebabkanDataSource
pendukung diinisialisasi pada CoroutineDispatcher yang salah. Tindakan ini akan memperbaiki error dan kemungkinan kasus ANR, terutama ketika menggunakan implementasi PagingSource saat ini dari Room, yang menggunakan jalur kompatibilitas ini.
Versi 3.0.0-alpha10
2 Desember 2020
androidx.paging:paging-*:3.0.0-alpha10
dirilis. Versi 3.0.0-alpha10 berisi commit berikut ini.
Perubahan API
API
dataRefreshFlow
dandataRefreshListener
yang sudah tidak digunakan lagi telah dihapus karena redundan dengan pembaruan loadStateFlow/Listener. Bagi yang bermigrasi, nilai loadStateFlow yang setara adalah:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
Perbaikan Bug
- endOfPaginationReached untuk RemoteMediator
REFRESH
sekarang diperluas dengan benar ke pembaruan LoadState dan mencegahAPPEND
danPREPEND
jarak jauh dipicu. (I94a3f, b/155290248) - Menyajikan daftar kosong karena halaman awal yang kosong atau
pemfilteran yang berlebihan tidak lagi mencegah Paging memulai pemuatan
PREPEND
atauAPPEND
. (I3e702, b/168169730) - Memperbaiki masalah saat
getRefreshKey
tidak dipanggil pada generasi PagingSource berikutnya saat pembatalan validasi terjadi dengan cepat. (I45460, b/170027530)
Kontribusi Eksternal
- Class abstrak baru InvalidatingPagingSourceFactory telah ditambahkan
dengan
.invalidate()
API yang meneruskan pembatalan validasi ke semua PagingSources yang mengeluarkannya. Terima kasih kepada @claraf3. (Ie71fc, b/160716447)
Masalah Umum
- Header dan footer dari transformasi .insertSeparators() mungkin tidak langsung muncul saat menggunakan RemoteMediator b/172254056
- Menggunakan RemoteMediator dapat menyebabkan
LoadState
jarak jauh terhenti jika pembatalan validasi danPagingSource.load(LoadParams.Refresh(...))
selesai sebelumRemoteMediator.load()
ditampilkan b/173717820
Versi 3.0.0-alpha09
11 November 2020
androidx.paging:paging-*:3.0.0-alpha09
dirilis. Versi 3.0.0-alpha09 berisi commit berikut.
Perubahan API
- Metode dataRefreshFlow/Pemroses sepenuhnya tidak digunakan lagi dengan klausa replaceWith. (I6e2dd)
Perbaikan Bug
- Perbaikan untuk
IllegalArgumentException
ditampilkan saat menggunakan pemisah dengan RemoteMediator dan invalidate akan dipicu saat pemuatan jarak jauh yang akan menampilkan endOfPagination masih berjalan (I3a260)
Versi 3.0.0-alpha08
28 Oktober 2020
androidx.paging:paging-*:3.0.0-alpha08
dirilis. Versi 3.0.0-alpha08 berisi commit berikut.
Perubahan API
- Varian Kotlin/Java dari
DataSource.InvalidatedCallback
telah digabungkan dengan mengaktifkan konversi SAM di Kotlin melalui antarmuka fungsional (tersedia di Kotlin 1.4). Hal ini juga memperbaiki bug yang menyebabkan varian kotlin dari callback yang tidak divalidasi tidak dipanggil setelah ditransformasi oleh.map
atau.mapByPage
. (I1f244, b/165313046)
Perbaikan Bug
- Interaksi Paging dengan ViewPager telah meningkat secara signifikan. Terutama, Paging tidak akan lagi membatalkan panggilan
RemoteMediator#load
karena invalidasi halaman. Tindakan ini juga tidak akan lagi membuat permintaan pemuatan tambahan/awalan, jika perlu REFRESH, hingga permintaan REFRESH berhasil diselesaikan. (I6390b, b/162252536) - Pemeriksaan lint API untuk MissingGetterMatchingBuilder diaktifkan untuk androidx (I4bbea, b/138602561)
- Memperbaiki bug yang membuat helper
.withLoadState*
ConcatAdapter
error karena memberi tahu RecyclerView dari thread latar belakang (I18bb5, b/170988309) - Memperbaiki bug saat pemuatan halaman non-kosong yang sangat kecil terkadang mencegah pengambilan data sehingga tidak memicu pemuatan dengan benar.Iffda3 b/169259468
Versi 3.0.0-alpha07
1 Oktober 2020
androidx.paging:paging-*:3.0.0-alpha07
dirilis. Versi 3.0.0-alpha07 berisi commit berikut ini.
Perubahan API
- Operator PagingData asinkron berbasis Guava kini menerima Executor sebagai parameter, untuk mengontrol konteks eksekusi. (Id4372)
Perbaikan Bug
- Memperbaiki pengecualian IndexOutOfBounds yang ditampilkan di RemoteMediator karena kondisi race. (I00b7f, b/165821814)
- Memperbaiki kondisi race dalam konversi DataSource -> PagingSource yang dapat menyebabkan PagingSource yang dihasilkan mengabaikan sinyal invalidasi dari DataSource.
- Memperbaiki masalah dalam logika pengambilan halaman yang terkadang menyebabkan kegagalan pengambilan generasi PagingSource baru sampai PagingDataAdapter.refresh() dipanggil
- Memperbaiki masalah yang akan menyebabkan posisi scroll terkadang hilang saat menggunakan DataSource yang dikonversi ke PagingSource (seperti yang dihasilkan oleh Room), bersama RemoteMediator
Kontribusi Eksternal
- Terima kasih kepada @simonschiller yang telah menambahkan operator transformasi asinkron berbasis RxJava2, RxJava3, dan Guava untuk PagingData.
Versi 3.0.0-alpha06
2 September 2020
androidx.paging:paging-*:3.0.0-alpha06
dirilis. Versi 3.0.0-alpha06 berisi commit berikut.
Perubahan API
UnsupportedOperationException
dengan pesan yang lebih jelas seputar kurangnya dukungan untuk ID stabil kini ditampilkan setiap kaliPagingDataAdapter.setHasStableIds
dipanggil. (Ib3890, b/158801427)
Perbaikan Bug
- insertSeparator tidak lagi memfilter halaman kosong yang memungkinkan jarak pengambilan data diterima oleh presenter meskipun banyak halaman kosong disisipkan. (I9cff6, b/162538908)
Versi 3.0.0-alpha05
19 Agustus 2020
androidx.paging:paging-*:3.0.0-alpha05
dirilis. Versi 3.0.0-alpha05 berisi commit berikut ini.
Perbaikan Bug
- Kini paging mengambil data halaman dengan benar meskipun data yang disajikan memiliki banyak filter
- Mengembalikan
LoadResult.Error
ke pemuatan yang dicoba ulang tidak lagi menyebabkan akses Item salah memicu kembali percobaan ulang
Kontribusi Eksternal
- Terima kasih kepada Clara F yang telah membantu membereskan beberapa pengujian. (549612)
Versi 3.0.0-alpha04
5 Agustus 2020
androidx.paging:paging-*:3.0.0-alpha04
dirilis. Versi 3.0.0-alpha04 berisi commit berikut.
Perubahan API
- Menambahkan
peek()
API keAsyncPagingDataDiffer
danPagingDataAdapter
untuk memungkinkan akses data yang disajikan tanpa memicu pemuatan halaman. (I38898, b/159104197) - Menambahkan
snapshot()
API kePagingDataAdapter
danAsyncPagingDataDiffer
untuk memungkinkan pengambilan item yang disajikan tanpa memicu pengambilan halaman. (I566b6, b/159104197) - Menambahkan konstruktor
PagingData.from(List<T>)
untuk memungkinkan penyajian daftar statis, yang dapat digabungkan dengan alur PagingData keseluruhan untuk menampilkan daftar statis di status tertentu, misalnya sebelum REFRESH awal selesai atau hanya untuk menguji transformasi. (Id134d) - Menghentikan dataRefresh Flow/Listener API karena ini ditujukan untuk mengekspos status item yang ditampilkan pada REFRESH. Namun, dengan perbaikan pada pengaturan waktu callback loadState Flow/Listener, dan properti itemCount, API ini tidak diperlukan lagi (Ia19f3)
- Menambahkan wrapper kompatibilitas RxJava3 untuk
PagingSource
danRemoteMediator
(I49ef3, b/161480176)
Perbaikan Bug
PositionalDataSource
dikonversi menjadiPagingSource
melalui helpertoPagingSourceFactory
, termasukPagingSource
yang dihasilkan oleh Room sekarang telah menandai dirinya dengan benar untuk mendukung jumping. (I3e84c, b/162161201)- Perbaikan bug untuk masalah penggunaan varian submitData sinkron
yang terkadang menimbulkan race yang menyebabkan
ClosedSendChannelException
(I4d702, b/160192222)
Kontribusi Eksternal
- Terima kasih kepada Zac Sweers karena telah menambahkan wrapper kompatibilitas RxJava3 mewakili Slack. (I49ef3, b/161480176)
Versi 3.0.0-alpha03
22 Juli 2020
androidx.paging:paging-*:3.0.0-alpha03
dirilis. Versi 3.0.0-alpha03 berisi commit berikut ini.
Perubahan API
- Konstruktor untuk PagingState sekarang bersifat publik, sehingga seharusnya mempermudah implementasi pengujian getRefreshKey() (I8bf15)
- Varian fungsi peta kotlin DataSource disembunyikan dari Java untuk mengatasi masalah ambiguitas antara varian asli dan varian kotlin. (If7b23, b/161150011)
- API redundan yang ditujukan untuk memudahkan pengguna Kotlin telah ditandai @JvmSynthetic (I56ae5)
- Overload untuk konstruktor LoadResult.Page ditambahkan sehingga COUNT_UNDEFINED menjadi nilai default untuk itemsBefore dan itemsAfter (I47849)
- Operator PagingData yang sudah ada diubah agar mau menerima metode penangguhan dan operator non-penangguhan mapSync, flatMapSync, dan filterSync baru diperkenalkan untuk pengguna Java. Metode transformasi yang ada telah dipindahkan ke fungsi ekstensi sehingga pengguna Kotlin kini harus mengimpornya. (I34239, b/159983232)
Perbaikan Bug
- Room (dan PositionalDataSource) PagingSources sekarang menampilkan pemisah utama sebagai bagian dari halaman pertama, sehingga pengguna tidak perlu men-scroll untuk memunculkannya. (I6f747, b/160257628)
- Pengaksesan item pada placeholder sekarang memicu pemuatan PagingSource dengan benar hingga halaman ditampilkan memenuhi indeks yang diminta setelah diubah oleh PagingData.filter() (I95625, b/158763195)
- Perbaikan bug yang terkadang dapat mencegah PagingDataAdapter.retry() mencoba lagi jika terjadi scroll setelah muncul pesan error yang dihasilkan PagingSource. (I1084f, b/160194384)
- Memperbaiki masalah ketika ada kemungkinan pengaksesan item setelah suatu halaman diturunkan ternyata tidak memuat halaman meskipun pengaksesan item tersebut masih berada dalam prefetchDistance (Ie95ae, b/160038730)
- Setelan PagingConfig.maxSize tidak lagi mengaktifkan placeholder setelah peristiwa penurunan (I2be29, b/159667766)
Versi 3.0.0-alpha02
24 Juni 2020
androidx.paging:paging-*:3.0.0-alpha02
dirilis. Versi 3.0.0-alpha02 berisi commit berikut.
Perubahan API
- Penambahan overload untuk konstruktor
PagingConfig
dengan nilai default umum (I39c50, b/158576040) - Penambahan overload untuk konstruktor
PagingDataAdapter
danAsyncPagingDataDiffer
dengan nilai default umum (Ie91f5) - API adaptor,
dataRefreshFlow
, dandataRefreshListener
sekarang meneruskan Boolean untuk memberi sinyal apakahPagingData
kosong (I6e37e, b/159054196) - Penambahan RxJava dan Guava API untuk RemoteMediator - RxRemoteMediator dan ListenableFutureRemoteMediator
- Penambahan bantuan ke PagingState untuk pengaksesan item umum seperti
isEmpty()
danfirstItemOrNull()
(I3b5b6, b/158892717)
Perbaikan Bug
- Pager kini memeriksa penggunaan kembali PagingSource di factory, untuk mencegah penggunaan ulang PagingSource yang tidak valid secara tidak sengaja, sehingga menimbulkan error yang tidak jelas (I99809, b/158486430)
- Kegagalan dari RemoteMediator REFRESH tidak lagi mencegah pemuatan PagingSource (I38b1b, b/158892717)
- Versi non-penangguhan
submitData
tidak lagi menyebabkan error karena pengumpulan serentak pada beberapaPagingData
ketika dipanggil setelah versisubmitData
yang ditangguhkan. (I26358, b/158048877) - Memperbaiki pengecualian "tidak dapat dikumpulkan dua kali dari pager" yang dapat terjadi setelah perubahan konfigurasi (I58bcc, b/158784811)
Versi 3.0.0-alpha01
10 Juni 2020
androidx.paging:paging-*:3.0.0-alpha01
dirilis. Versi 3.0.0-alpha01 berisi commit berikut.
Library Paging telah diupdate ke versi 3.0, untuk mengaktifkan beberapa fitur baru.
Fitur Baru Versi 3.0
- Dukungan kelas satu untuk Flow dan coroutine Kotlin.
- Dukungan untuk pemuatan asinkron dengan fungsi penangguhan coroutine, primitif Guava ListenableFuture atau RxJava Single.
- Status pemuatan bawaan dan sinyal error untuk desain UI yang responsif, termasuk fungsi coba lagi (retry) dan refresh.
- Penyempurnaan pada lapisan repositori
- Antarmuka sumber data yang disederhanakan
- Penomoran halaman database + jaringan yang disederhanakan
- Dukungan pembatalan
- Penyempurnaan pada lapisan presentasi
Masalah Umum
- Paging 3 javadocs belum tersedia. Untuk sementara, gunakan panduan yang ditautkan di atas atau dokumen Kotlin. (b/158614050)
Versi 2.1.2
Versi 2.1.2
18 Maret 2020
androidx.paging:paging:2.1.2
dirilis. Versi 2.1.2 berisi commit berikut pada 2.1.0.
Perbaikan Bug
- Perbaikan untuk
IndexOutOfBoundsException
dalam kasus yang jarang terjadi saat mengonversi posisi selama pembatalan.
Masalah rilis
Versi Paging
2.1.1
dirilis secara tidak benar dari cabang yang salah dikonfigurasi, sehingga mengekspos API dan fungsionalitas yang diimplementasikan sebagian dalam rilis mendatang.Paging
2.1.2
berisi perbaikan pemusatan muatan yang awalnya dirilis pada 2.1.1, tetapi kali ini dipilih lebih teliti berdasarkan rilis 2.1.0. Sebaiknya Anda mengupgrade ke rilis ini, jika saat ini Anda menggunakan 2.1.1.
Versi 2.1.1
Versi 2.1.1
18 Desember 2019
androidx.paging:paging-*:2.1.1
dirilis. Versi 2.1.1 berisi commit berikut.
Perbaikan bug
- Pemuatan awal yang berdekatan dari PositionalDataSources kini terpusat di sekitar akses terakhir saat placeholder dinonaktifkan
Versi 2.1.0
Versi 2.1.0
25 Januari 2019
Paging 2.1.0
dirilis tanpa perubahan dari versi 2.1.0-rc01
.
Versi 2.1.0-rc01
6 Desember 2018
Paging 2.1.0-rc01
dirilis tanpa perubahan dari versi 2.1.0-beta01
.
Versi 2.1.0-beta01
1 November 2018
Paging 2.1.0-beta01
dirilis tanpa perubahan dari versi 2.1.0-alpha01
.
Versi 2.1.0-alpha01
12 Oktober 2018
Paging 2.1.0-alpha01
kini memiliki page dropping, dan library ekstensi KTX untuk setiap artefak, selain beberapa perubahan API dan perbaikan bug lainnya.
Perubahan API
- Penambahan
PagedList.Config.Builder.setMaxSize()
untuk membatasi jumlah item yang dimuat dalam memori. - Penambahan
androidx.paging.Config()
sebagai alternatif Kotlin untukPagedList.Config.Builder
- Penambahan
androidx.paging.PagedList()
sebagai alternatif Kotlin untukPagedList.Builder
- Penambahan
DataSourceFactory.toLiveData()
sebagai alternatif Kotlin untukLivePagedListBuilder
- Penambahan
DataSourceFactory.toObservable()
dantoFlowable()
sebagai alternatif Kotlin untukRxPagedListBuilder
- Penambahan
AsyncPagedListDiffer.addPagedListListener()
untuk memantau kapan PagedList ditukar. b/111698609 - Penambahan varian
PagedListAdapter.onCurrentListChanged()
yang meneruskan daftar lama dan baru; varian sebelumnya tidak digunakan lagi. - Penambahan varian
PagedListAdapter/AsyncPagedListDiffer.submitList()
yang mengambil callback tambahan yang terpicu jika/ketika pagedlist ditampilkan, setelah diffing. Hal ini memungkinkan Anda untuk menyinkronkan pertukaran PagedList dengan update UI lainnya. b/73781068 - Penambahan
PagedList.getLoadedCount()
untuk memberitahukan jumlah item dalam memori. Perlu diketahui bahwa nilai yang ditampilkan akan selalu sama dengan.size()
jika placeholder dinonaktifkan.
Perbaikan Bug
- Perbaikan kondisi race saat melakukan diffing jika daftar digunakan kembali b/111591017
PagedList.loadAround()
sekarang menampilkanIndexOutOfBoundsException
jika indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.- Perbaikan masalah ketika ukuran pemuatan awal yang sangat kecil dan data yang tidak berubah berpotensi menghentikan pemuatan lebih lanjut. b/113122599
Versi 2.0.0
Versi 2.0.0
1 Oktober 2018
Paging 2.0.0
dirilis dengan satu perbaikan bug.
Perbaikan Bug
- Perbaikan error yang dapat terjadi pada scroll yang sangat cepat menggunakan
PositionalDataSource
dan placeholder b/114635383.
Versi 2.0.0-beta01
2 Juli 2018
Perbaikan Bug
- Perbaikan konten yang hilang dalam beberapa kasus terdahulu (placeholder dinonaktifkan, PositionalDataSource) b/80149146
- (Sudah dirilis dalam
1.0.1
) Perbaikan error ketikaPagedListAdapter
danAsyncPagedListDiffer
gagal menandai peristiwa pemindahan. b/110711937
Dependensi Pra-AndroidX
Untuk Paging versi pra-AndroidX, sertakan dependensi berikut:
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"
}
Versi 1.0.1
Versi 1.0.1
26 Juni 2018
Paging 1.0.1
dirilis dengan satu perbaikan bug di runtime
. Kami sangat menganjurkan penggunaan 1.0.1
demi stabilitas. Paging RxJava2 1.0.1
juga dirilis, dan identik dengan 1.0.0-rc1
.
Perbaikan Bug
- Perbaikan error ketika
PagedListAdapter
danAsyncPagedListDiffer
gagal menandai peristiwa pemindahan. b/110711937
Versi RxJava2 1.0.0
Versi RxJava2 1.0.0-rc1
16 Mei 2018
Paging RxJava2 1.0.0-rc1
dialihkan ke kandidat rilis tanpa perubahan dari rilis alfa awal.
Versi 1.0.0
Versi 1.0.0-rc1
19 April 2018 Kandidat Rilis Paging
Kami tidak memiliki masalah umum atau fitur baru lagi yang dijadwalkan untuk
rilis Paging 1.0.0
. Harap upgrade project untuk menggunakan 1.0.0-rc1
dan
bantu kami melakukan uji banding agar dapat merilis 1.0.0
yang sempurna.
Tidak ada perubahan dalam rilis ini, semuanya sama dengan versi 1.0.0-beta1
.
Versi 1.0.0-beta01
5 April 2018
Paging akan berada dalam versi beta untuk waktu yang singkat sebelum menjadi kandidat rilis.
Tidak ada rencana perubahan API lebih lanjut untuk Paging 1.0
, dan standar untuk setiap perubahan API sangatlah tinggi.
Dukungan RxJava2 alfa untuk Paging dirilis sebagai modul opsional terpisah (android.arch.paging:rxjava2:1.0.0-alpha1
)
dan akan diberi versi sementara secara terpisah sampai stabil.
Library baru ini memberikan alternatif RxJava2 untuk LivePagedListBuilder
, yang mampu merancang
Observable
dan Flowable
, menggunakan Scheduler
, bukannya 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();
Fitur Baru
RxPagedListBuilder
ditambahkan melalui artefakandroid.arch.paging:rxjava2
baru.
Perubahan API
Perubahan API untuk memperjelas peran eksekutor dalam builder:
Mengganti nama
setBackgroundThreadExecutor()
menjadisetFetchExecutor()
(dalamPagedList.Builder
danLivePagedListBuilder
)Mengganti nama
setMainThreadExecutor()
menjadisetNotifyExecutor()
(dalamPagedList.Builder
).
Memperbaiki anggota
PagedList.mCallbacks
menjadi pribadi.
Perbaikan Bug
LivePagedListBuilder
memicu pemuatanPagedList
awal pada eksekutor yang ditentukan, bukannya kumpulan thread IO Komponen Arch.Perbaikan perilaku pembatalan validasi dalam wrapper
DataSource
internal (yang digunakan untuk mengimplementasikanDataSource.map
, serta pemuatanPositionalDataSource
yang dinonaktifkan placeholder). b/77237534
Versi 1.0.0-alpha7
21 Maret 2018
Paging 1.0.0-alpha7
dirilis bersama Lifecycle 1.1.1
. Karena Paging alfa7 bergantung pada pemindahan class Function
sebagaimana disebutkan di atas, Anda harus memperbarui dependensi lifecycle:runtime
ke android.arch.lifecycle:runtime:1.1.1
.
Paging alpha7
direncanakan menjadi rilis final sebelum Paging mencapai beta.
Perubahan API
- Objek
DataSource.LoadParams
sekarang memiliki konstruktor publik dan objekDataSource.LoadCallback
sekarang abstrak. Perubahan ini memungkinkan penggabunganDataSource
atau pengujianDataSource
secara langsung dengan callback palsu. b/72600421 - Mapper untuk DataSource dan DataSource.Factory
map(Function<IN,OUT>)
memungkinkan Anda mengubah, menggabungkan, atau mendekorasi hasil yang dimuatDataSource
.mapByPage(<List<IN>,List<OUT>>)
memungkinkan tindakan yang sama untuk batch processing (misalnya, jika item yang dimuat dari SQL harus mengkueri database terpisah, hal tersebut dapat dilakukan sebagai batch.)
PagedList#getDataSource()
ditambahkan sebagai metode yang mempermudah pekerjaan b/72611341- Semua class yang tidak digunakan lagi telah dihapus dari API, termasuk sisa-sisa paket
recyclerview.extensions
danLivePagedListProvider
. DataSource.Factory
diubah dari antarmuka menjadi class abstrak guna memungkinkan fungsi pemetaan.
Perbaikan Bug
- Perubahan Builder menjadi final. b/70848565
- Perbaikan implementasi
DataSource
Room untuk menangani kueri multitabel. Perbaikan ini disertakan dalam Room 1.1.0-beta1, lihat di atas. - Perbaikan bug yang menyebabkan
BoundaryCallback.onItemAtEndLoaded
tidak dipanggil untukPositionalDataSource
jika placeholder diaktifkan dan ukuran total merupakan kelipatan persis ukuran halaman.
Versi 1.0.0-alpha5
22 Januari 2018
Perbaikan Bug
- Perbaikan pemuatan halaman saat placeholder dinonaktifkan b/70573345
- Logging tambahan untuk melacak bug IllegalArgumentException b/70360195 (dan perbaikan sisi Room spekulatif)
- Perbaikan kode contoh Javadoc b/70411933, b/71467637