Tổng quan về thư viện Paging Một phần của Android Jetpack.
Thư viện Paging giúp bạn tải và hiển thị các trang dữ liệu của một tập dữ liệu lớn hơn từ bộ nhớ cục bộ hoặc qua mạng. Phương pháp này cho phép ứng dụng sử dụng cả băng thông mạng và tài nguyên hệ thống một cách hiệu quả hơn. Các thành phần của thư viện Paging được thiết kế để phù hợp với cấu trúc ứng dụng Android được đề xuất, tích hợp mượt mà với các thành phần khác của Jetpack và cung cấp khả năng hỗ trợ Kotlin hàng đầu.
Lợi ích của việc sử dụng thư viện Paging
Thư viện Paging bao gồm các tính năng sau:
- Tính năng lưu dữ liệu được phân trang vào bộ nhớ đệm trong bộ nhớ. Tính năng này giúp đảm bảo rằng ứng dụng dùng tài nguyên hệ thống một cách hiệu quả trong khi làm việc với dữ liệu được phân trang.
- Tính năng loại bỏ yêu cầu trùng lặp tích hợp sẵn giúp đảm bảo ứng dụng dùng băng thông mạng và tài nguyên hệ thống một cách hiệu quả.
- Các bộ chuyển đổi
RecyclerView
có thể định cấu hình sẽ tự động yêu cầu dữ liệu khi người dùng cuộn đến cuối dữ liệu đã tải. - Tính năng hỗ trợ hàng đầu cho các coroutine và luồng Kotlin, cũng như
LiveData
và RxJava. - Tính năng hỗ trợ được tích hợp sẵn để xử lý lỗi, bao gồm khả năng làm mới và thử lại.
Gửi phản hồi
Ý kiến phản hồi của bạn có thể giúp cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin về cách gửi ý kiến phản hồi.
Thiết lập
Để nhập các thành phần Paging vào ứng dụng Android, hãy thêm các phần phụ thuộc sau vào tệp build.gradle
của ứng dụng:
Groovy
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") }
Cấu trúc thư viện
Các thành phần của thư viện Paging hoạt động trong 3 lớp của ứng dụng:
- Lớp lưu trữ
- Lớp
ViewModel
- Lớp giao diện người dùng
Phần này mô tả các thành phần thư viện Paging hoạt động ở mỗi lớp và cách các thành phần này hoạt động cùng nhau để tải và hiển thị dữ liệu được phân trang.
Lớp kho lưu trữ
Thành phần thư viện Paging chính trong lớp lưu trữ là PagingSource
. Mỗi đối tượng PagingSource
xác định một nguồn dữ liệu và cách truy xuất dữ liệu từ nguồn đó. Đối tượng PagingSource
có thể tải dữ liệu từ bất kỳ nguồn nào, bao gồm cả nguồn trên mạng và cơ sở dữ liệu cục bộ.
Một thành phần khác trong thư viện Paging mà bạn có thể sử dụng là RemoteMediator
. Đối tượng RemoteMediator
xử lý phân trang từ một nguồn dữ liệu phân lớp, chẳng hạn như nguồn dữ liệu trên mạng có bộ nhớ đệm cơ sở dữ liệu cục bộ.
Lớp ViewModel
Thành phần Pager
cung cấp API công khai để tạo các thực thể của PagingData
được hiển thị trong các luồng phản ứng, dựa trên đối tượng PagingSource
và đối tượng cấu hình PagingConfig
.
Thành phần kết nối lớp ViewModel
với giao diện người dùng là PagingData
. Đối tượng PagingData
là một vùng chứa ảnh chụp nhanh của dữ liệu được phân trang. Phương thức này truy vấn một đối tượng PagingSource
và lưu trữ kết quả đó.
Lớp giao diện người dùng
Thành phần thư viện Paging chính trong lớp giao diện người dùng là PagingDataAdapter
, một bộ chuyển đổi RecyclerView
xử lý dữ liệu được phân trang.
Ngoài ra, bạn có thể sử dụng thành phần AsyncPagingDataDiffer
có sẵn để tạo bộ chuyển đổi tuỳ chỉnh của riêng mình.
Tài nguyên khác
Để tìm hiểu thêm về thư viện Paging, hãy xem các tài nguyên khác sau đây:
Lớp học lập trình
Đề xuất cho bạn
- Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
- Tải và hiện dữ liệu được phân trang
- Di chuyển sang Paging 3
- Phân trang qua mạng và cơ sở dữ liệu