Paging kitaplığına genel bakış Android Jetpack'in bir parçasıdır.
Paging kitaplığı, yerel depolama alanından veya ağ üzerinden daha büyük bir veri kümesinden veri sayfaları yükleyip görüntülemenize yardımcı olur. Bu yaklaşım, uygulamanızın hem ağ bant genişliğini hem de sistem kaynaklarını daha verimli kullanmasını sağlar. Paging kitaplığının bileşenleri, önerilen Android uygulama mimarisine uyacak, diğer Jetpack bileşenleriyle sorunsuz bir şekilde entegre olacak ve birinci sınıf Kotlin desteği sağlayacak şekilde tasarlanmıştır.
Paging kitaplığını kullanmanın avantajları
Paging kitaplığı aşağıdaki özellikleri içerir:
- Sayfalanmış verileriniz için RAM önbelleğe alma. Bu sayede, uygulamanızın sayfalı verilerle çalışırken sistem kaynaklarını verimli bir şekilde kullanması sağlanır.
- Uygulamanızın ağ bant genişliğini ve sistem kaynaklarını verimli bir şekilde kullanmasını sağlayan yerleşik istek tekilleştirme özelliği.
- Kotlin eş yordamları, akışları ve Jetpack Compose için yerleşik destek
- Yenileme ve yeniden deneme özellikleri de dahil olmak üzere hata işleme için yerleşik destek.
- Sayfalama kaynaklarını ve veri dönüşümlerini doğrulamak için
TestPagerveasSnapshotgibi özel test yardımcı programları.
Kurulum
Sayfalama bileşenlerini Android uygulamanıza aktarmak için uygulamanızın build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:
Kotlin
dependencies { val paging_version = "3.5.3" // Needed for Android Views and LiveData. Optional if only using // paging-compose implementation("androidx.paging:paging-runtime:$paging_version") // Needed to collect PagingData flows in Jetpack Compose implementation("androidx.paging:paging-compose:$paging_version") // Needed to test PagingSource and PagingData transformations in isolation testImplementation("androidx.paging:paging-testing:$paging_version") }
Modern
dependencies { def paging_version = "3.5.3" // Needed for Android Views and LiveData. Optional if only using // paging-compose implementation "androidx.paging:paging-runtime:$paging_version" // Needed to collect PagingData flows in Jetpack Compose implementation "androidx.paging:paging-compose:$paging_version" // Needed to test PagingSource and PagingData transformations in isolation testImplementation "androidx.paging:paging-testing:$paging_version" }
Kitaplık mimarisi
Paging kitaplığının bileşenleri, uygulamanızın üç katmanında çalışır:
- Depo katmanı
ViewModelkatmanı- Kullanıcı arayüzü katmanı
Bu bölümde, her katmanda çalışan Paging kitaplığı bileşenleri ve bu bileşenlerin sayfalı verileri yükleyip görüntülemek için birlikte nasıl çalıştığı açıklanmaktadır.
Depo katmanı
Depo katmanındaki birincil Paging kitaplığı bileşeni PagingSource'dir. Her PagingSource nesnesi, bir veri kaynağını ve bu kaynaktan verilerin nasıl alınacağını tanımlar. PagingSource nesnesi, ağ kaynakları ve yerel veritabanları dahil olmak üzere herhangi bir kaynaktan veri yükleyebilir.
Kullanabileceğiniz başka bir Paging kitaplığı bileşeni de RemoteMediator'dir. RemoteMediator nesnesi, yerel veritabanı önbelleği olan bir ağ veri kaynağı gibi katmanlı bir veri kaynağından sayfalama işlemini gerçekleştirir.
ViewModel katmanı
Pager bileşeni, bir PagingSource nesnesini ve PagingConfig yapılandırma nesnesini temel alarak reaktif akışlarda gösterilen PagingData örnekleri oluşturmak için herkese açık bir API sağlar.
ViewModel katmanını kullanıcı arayüzüne bağlayan bileşen PagingData'dir. PagingData nesnesi, sayfalandırılmış verilerin anlık görüntüsünü içeren bir kapsayıcıdır. Bir PagingSource nesnesini sorgular ve sonucu depolar.
Kullanıcı arayüzü katmanı
Birincil Paging UI API'si collectAsLazyPagingItems()'dir. Sayfalandırılmış öğeleri, Compose'un geç yüklenen düzen bileşenleri (ör. LazyColumn ve LazyRow) tarafından kolayca kullanılabilecek bir veri listesi olarak sunar.
Kullanıcı arayüzünün, adaptörlere veya fark mantığına gerek kalmadan veri yüklemelerine, güncellemelere ve hatalara otomatik olarak tepki vermesini sağlayan Compose uyumlu API'leri kullanmak için androidx.paging:paging-compose kitaplığını ekleyin. Döndürülen LazyPagingItems değerini bir LazyColumn içinde items()'e iletmek için Flow<PagingData> üzerinde collectAsLazyPagingItems() uzantı işlevini kullanın.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Daha fazla bilgi için Büyük veri kümeleri (sayfalama) bölümüne bakın.
Sizin için önerilenler
- Not: JavaScript devre dışı olduğunda bağlantı metni gösterilir.
- Sayfalandırılmış verileri yükleme ve görüntüleme
- Paging 3'e geçiş yapma
- Ağ ve veritabanından sayfa oluşturma