การแบ่งหน้า
ตารางนี้แสดงอาร์ติแฟกต์ทั้งหมดในกลุ่ม androidx.paging
| อาร์ติแฟกต์ | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า | 
|---|---|---|---|---|
| paging-* | 3.3.6 | - | - | 3.4.0-alpha04 | 
| paging-compose | 3.3.6 | - | - | 3.4.0-alpha04 | 
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Paging คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { def paging_version = "3.3.6" 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.4.0-alpha04" }
Kotlin
dependencies { val paging_version = "3.3.6" 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.4.0-alpha04") }
ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบ KTX
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 3.4
เวอร์ชัน 3.4.0-alpha04
10 กันยายน 2025
androidx.paging:paging-*:3.4.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.4.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม 
PagingStateAPIclosestItemAroundPositionใหม่เพื่อดึงข้อมูลรายการที่โหลดซึ่งอยู่ใกล้ตำแหน่งเป้าหมายมากที่สุดและตรงกับเพรดิเคตอินพุต ซึ่งใช้เพื่อสร้างคีย์รีเฟรชตามรายการได้ในกรณีที่รายการที่เหมาะแก่การยึดเหนี่ยวอยู่ใกล้ๆ แต่ไม่ได้อยู่ในตำแหน่งเป้าหมายที่แน่นอน (I96e5c, b/440187139) 
เวอร์ชัน 3.4.0-alpha03
27 สิงหาคม 2025
androidx.paging:paging-*:3.4.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.4.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- Paging-common ได้เพิ่มเดสก์ท็อปเป็นเป้าหมายใหม่ของ Kotlin Multiplatform (KMP) โดยรวมแล้วตอนนี้รองรับ JVM(Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) และเว็บ (JavaScript, WasmJS) (Id2483, b/436884811)
 - การทดสอบการแบ่งหน้าได้เพิ่มเป้าหมาย Kotlin Multiplatform (KMP) ใหม่ โดยรวมแล้วตอนนี้รองรับ JVM(Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) และเว็บ (JavaScript, WasmJS) (I0c543, b/435014650)
 - Paging-compose ได้เพิ่มเป้าหมาย Kotlin Multiplatform (KMP) ใหม่ โดยรวมแล้วตอนนี้รองรับ JVM(Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, tvOS, macOS, MinGW) และเว็บ (JavaScript, WasmJS) (I70d44, b/436884801)
 
การเปลี่ยนแปลง API
- ย้าย minSdk เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
 
เวอร์ชัน 3.4.0-alpha02
30 กรกฎาคม 2025
androidx.paging:paging-*:3.4.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.4.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ 
PagingData.fromอนุญาตให้ตั้งค่าplaceholdersBeforeและplaceholdersAfterแล้ว โปรดทราบว่าการเลื่อนผ่านตัวยึดตำแหน่งเหล่านี้จะไม่ทำให้เกิดการโหลด (I06983) 
เวอร์ชัน 3.4.0-alpha01
2 กรกฎาคม 2025
androidx.paging:paging-*:3.4.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.4.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- Paging ได้เพิ่มเป้าหมาย KMP ต่อไปนี้ watchos, tvos, mingwX64, watchosDeviceArm64 และ linuxArm64 (I237dd, Ia62b3, b/368046982, Icf15d, b/364652024, I139d3, b/338268719)
 
การแก้ไขข้อบกพร่อง
- การทดสอบหน่วย Android ที่ดึงข้อมูลใน Paging 3.3 ขึ้นไปจะไม่เกิดข้อผิดพลาดจาก 
PagingLogger(Ia9400, b/331684448) อีกต่อไป - แก้ไขข้อบกพร่องที่ 
RecyclerViewแสดงIndexOutOfBoundsExceptionเมื่อผู้ใช้เลื่อนขณะอัปเดตRecyclerView(Id1f16, b/381024738) - แก้ไขข้อบกพร่องที่การแบ่งหน้าไม่สามารถทริกเกอร์การโหลดเพิ่มเติมเมื่อรีเฟรชขณะเลื่อน (I60ca5, b/352586078)
 - แก้ไขปัญหาการขัดข้องเมื่อเลื่อนขณะรีเฟรชรายการการแบ่งหน้า (I8c65a, b/347649763)
 
เวอร์ชัน 3.3
เวอร์ชัน 3.3.6
12 กุมภาพันธ์ 2025
androidx.paging:paging-*:3.3.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะจัดเก็บสัญญาณรีเฟรชและลองอีกครั้งที่ส่งระหว่างการรีเฟรชครั้งแรก และจะส่งอีกครั้งโดยอัตโนมัติเมื่อ Paging presenter พร้อม
 
การมีส่วนร่วมภายนอก
เวอร์ชัน 3.3.5
11 ธันวาคม 2024
androidx.paging:paging-*:3.3.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.5 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ 
RecyclerViewแสดงIndexOutOfBoundsExceptionเมื่อผู้ใช้เลื่อนขณะอัปเดตRecyclerView(Id1f16, b/381024738) 
เวอร์ชัน 3.3.4
13 พฤศจิกายน 2024
androidx.paging:paging-*:3.3.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- การทดสอบหน่วย Android ที่ดึงข้อมูลใน Paging 3.3 ขึ้นไปจะไม่แสดงข้อผิดพลาด เช่น 
Method isLoggable in android.util.Log not mockedอีกต่อไป (Ia9400, b/331684448) 
เวอร์ชัน 3.3.2
7 สิงหาคม 2024
androidx.paging:paging-*:3.3.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.2 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
paging-commonและpaging-testingได้เพิ่มเป้าหมายใหม่แบบหลายแพลตฟอร์มของ Kotlin ได้แก่watchos,tvosและlinuxArm64(90c9768), (53e0eca)
เวอร์ชัน 3.3.1
24 กรกฎาคม 2024
androidx.paging:paging-*:3.3.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ 
AsyncPagingDataDifferหรือ API ที่สร้างขึ้นบนAsyncPagingDataDifferเช่นPagingDataAdapterที่ใช้กับRecyclerViewจะไม่สามารถทริกเกอร์การโหลดเพิ่มเติมเมื่อแหล่งข้อมูลสำรองรีเฟรชขณะเลื่อน (I60ca5, b/352586078) - แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อนำรายการออกจากแหล่งข้อมูลสำรองขณะเลื่อน 
RecyclerViewโดยใช้PagingDataAdapterหรือAsyncPagingDataDiffer(I8c65a, b/347649763) 
เวอร์ชัน 3.3.0
14 พฤษภาคม 2024
androidx.paging:paging-*:3.3.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 3.2.0
- ตอนนี้ 
PagingDataPresenterเป็นชั้นเรียนสาธารณะแล้ว ตอนนี้คุณสร้างพรีเซนเตอร์แบบหลายแพลตฟอร์มบนPagingDataPresenterได้แล้ว โดยไม่ต้องใช้ Paging API ภายในหรือpaging-runtimeของAsyncPagingDataDiffer - เพิ่มเมธอดตัวช่วยใหม่ 
LoadStatesและCombinedLoadStatesในhasErrorและisIdleเพื่อตรวจสอบว่าLoadStatesอยู่ในสถานะข้อผิดพลาดหรือสถานะNotLoadingตามลำดับ นอกจากนี้ ยังได้เพิ่มawaitNotLoading()เมธอดส่วนขยาย Kotlin ใหม่ในFlow<CombinedLoadStates>ซึ่งจะรอจนกว่าการโหลดจะเข้าสู่สถานะNotLoadingหรือสถานะข้อผิดพลาด - ตอนนี้ 
PagingData.empty()จะส่งสถานะNotLoadingโดยค่าเริ่มต้น เว้นแต่จะมีการส่งLoadStatesที่กำหนดเองไปยังตัวสร้าง ซึ่งแตกต่างจากลักษณะการทำงานที่มีอยู่ซึ่งจะไม่ส่งLoadStatesเมื่อส่งไปยังPagingDataAdapterหรือจะส่งสถานะการโหลดเมื่อรวบรวมเป็นLazyPagingItemsเมื่อรวบรวมเป็นLazyPagingItemsตอนนี้ระบบจะแสดงรายการที่ว่างเปล่าทันทีเมื่อมีการรวบรวมครั้งแรก 
ความเข้ากันได้ของ Kotlin Multiplatform
ตอนนี้ Paging จัดส่งอาร์ติแฟกต์ที่ใช้ได้กับ Kotlin Multiplatform แล้ว ซึ่งส่วนใหญ่เป็นผลงานที่ส่งต่อมาจากโปรเจ็กต์ multiplatform-paging ของ CashApp
paging-commonได้ย้าย Paging 3 API ทั้งหมดไปที่commonและตอนนี้เข้ากันได้กับ jvm และ iOS นอกเหนือจาก Androidpaging-testingได้ย้ายโค้ดไปยังcommonและตอนนี้ใช้งานร่วมกับ jvm และ iOS ได้แล้ว นอกเหนือจาก Androidpaging-composeได้ย้ายโค้ดไปยังcommonและจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มของandroidx.composepaging-runtime,paging-guava,paging-rxjava2และpaging-rxjava3จะยังคงใช้ได้เฉพาะใน Android
เวอร์ชัน 3.3.0-rc01
1 พฤษภาคม 2024
androidx.paging:paging-*:3.3.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงใน Paging 3.3.0-beta01 เวอร์ชัน 3.3.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 3.3.0-beta01
3 เมษายน 2024
androidx.paging:paging-*:3.3.0-beta01 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญ เวอร์ชัน 3.3.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 3.3.0-alpha05
20 มีนาคม 2024
androidx.paging:paging-*:3.3.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้การแบ่งหน้าใช้คำอธิบายประกอบ 
@MainThreadของ AndroidX สำหรับโค้ดทั่วไป (I78f0d, b/327682438) 
เวอร์ชัน 3.3.0-alpha04
6 มีนาคม 2024
androidx.paging:paging-*:3.3.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดเล็กน้อยในเอกสารที่เกี่ยวข้องกับการเพิ่มความเข้ากันได้กับ Kotlin Multiplatform (aosp/2950785)
 
เวอร์ชัน 3.3.0-alpha03
7 กุมภาพันธ์ 2024
androidx.paging:paging-*:3.3.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ 
PagingDataPresenterเป็นชั้นเรียนสาธารณะแล้ว ตอนนี้คุณสร้างพรีเซนเตอร์แบบหลายแพลตฟอร์มบนPagingDataPresenterได้แล้ว โดยไม่ต้องใช้ Paging API ภายในหรือpaging-runtimeของAsyncPagingDataDiffer(Id1f74, b/315214786) - เพิ่มเมธอดตัวช่วย 
LoadStatesและCombinedLoadStatesใหม่เพื่อตรวจสอบว่าLoadStatesอยู่ในสถานะข้อผิดพลาดหรือNotLoadingนอกจากนี้ ยังได้เพิ่ม API ใหม่ที่รอLoadStateFlowจนกว่าการโหลดจะเปลี่ยนเป็นสถานะNotLoadingหรือสถานะข้อผิดพลาด (Id6c67) 
การเปลี่ยนแปลงพฤติกรรม
- ตอนนี้ 
PagingData.empty()จะส่งสถานะNotLoadingโดยค่าเริ่มต้น เว้นแต่จะมีการส่งLoadStatesที่กำหนดเองไปยังตัวสร้าง ซึ่งแตกต่างจากลักษณะการทำงานที่มีอยู่ซึ่งจะไม่ส่งLoadStatesเมื่อส่งไปยังPagingDataAdapterหรือจะส่งสถานะการโหลดเมื่อรวบรวมเป็นLazyPagingItemsเมื่อรวบรวมเป็นLazyPagingItemsตอนนี้ระบบจะแสดงรายการที่ว่างเปล่าทันทีเมื่อมีการรวบรวมครั้งแรก (I4d11d, b/301833847) 
เวอร์ชัน 3.3.0-alpha02
20 กันยายน 2023
androidx.paging:paging-*:3.3.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.3.0-alpha02 มีคอมมิตต่อไปนี้
ความเข้ากันได้ของ Kotlin Multiplatform
ตอนนี้ Paging จัดส่งอาร์ติแฟกต์ที่ใช้ได้กับ Kotlin Multiplatform แล้ว ซึ่งส่วนใหญ่เป็นผลงานที่ส่งต่อมาจากโปรเจ็กต์ multiplatform-paging ของ CashApp ซึ่งจะช่วยให้เราหลีกเลี่ยงความแตกต่างระหว่างที่เก็บข้อมูล 2 แห่งและทำให้ที่เก็บข้อมูลทั้ง 2 แห่งเข้ากันได้
paging-commonได้ย้าย Paging 3 API ทั้งหมดไปที่commonและตอนนี้เข้ากันได้กับ jvm และ iOS นอกเหนือจาก Androidpaging-testingได้ย้ายโค้ดไปยังcommonและตอนนี้ใช้งานร่วมกับ jvm และ iOS ได้แล้ว นอกเหนือจาก Androidpaging-composeได้ย้ายโค้ดไปยังcommonและจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มของandroidx.composepaging-runtime,paging-guava,paging-rxjava2และpaging-rxjava3จะยังคงใช้ได้เฉพาะใน Android
การเปลี่ยนแปลง API
- อินเทอร์เฟซ Logger สาธารณะที่มีไว้สำหรับการใช้งานภายในเท่านั้นถูกเลิกใช้งานแล้ว (I16e95, b/288623117)
 
การมีส่วนร่วมภายนอก
- ขอขอบคุณ veyndan จาก Cash App ที่ช่วยย้าย Paging ไปยัง Kotlin Multiplatform (#560, #561, #562, #573, #576, #577, #578, #579, #580, #581, #583, #584, #586, #609)
 
เวอร์ชัน 3.3.0-alpha01
20 กันยายน 2023
- นี่คือการเปิดตัวไลบรารี androidx.paging เป็นครั้งแรกในหลายแพลตฟอร์ม เวอร์ชันนี้มีเฉพาะอาร์ติแฟกต์ 
*-jvmและ*-androidสำหรับตัวแปร macOS, iOS และ Linux ให้ใช้3.3.0-alpha02 
เวอร์ชัน 3.2
เวอร์ชัน 3.2.1
6 กันยายน 2023
androidx.paging:paging-*:3.2.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ 
asSnapshot()API ของอาร์ติแฟกต์การทดสอบการแบ่งหน้าจะค้างเมื่อส่ง Flow ที่สร้างโดยใช้PagingData.from(List)เนื่องจากasSnapshot()จะไม่มีข้อมูลเกี่ยวกับเวลาที่การโหลดเสร็จสิ้น (ซึ่งแตกต่างจากPagingData.from(List, LoadStates)ที่โอเวอร์โหลด) วิธีแก้ปัญหานี้ใช้ได้กับโฟลว์ที่ทำเสร็จได้เท่านั้น (เช่นflowOf(PagingData.from(...))) สำหรับโฟลว์ที่ทำเสร็จไม่ได้ (เช่นMutableStateFlowให้ใช้โอเวอร์โหลดPagingData.fromที่ให้LoadStates) (I502c3) - ตอนนี้ Paging Compose ใช้ 
AndroidUiDispatcher.Mainภายในเพื่อให้แน่ใจว่าข้อมูลใหม่จะพร้อมใช้งานในเฟรมเดียวกันเมื่อโหลดเสร็จ (Ia55af) 
เวอร์ชัน 3.2.0
26 กรกฎาคม 2023
androidx.paging:paging-*:3.2.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 3.1.0
- Paging Compose มีความเสถียรของ API และได้ผสานรวมกลับเข้าไปใน Paging ส่วนที่เหลือแล้ว โดยตอนนี้เวอร์ชันของ Paging Compose จะตรงกับอาร์ติแฟกต์ Paging อื่นๆ ทั้งหมด การเปลี่ยนแปลงตั้งแต่เวอร์ชัน 3.1.0 มีดังนี้
- รองรับการแสดงตัวอย่างรายการข้อมูลปลอมโดยการสร้าง 
PagingData.from(fakeData)และห่อPagingDataนั้นในMutableStateFlow(เช่นMutableStateFlow(PagingData.from(listOf(1, 2, 3)))) ส่งโฟลว์นี้ไปยัง Composable ของ@Previewเป็นตัวรับสำหรับcollectAsLazyPagingItems()เพื่อแสดงตัวอย่าง - รองรับเลย์เอาต์แบบ Lazy ทั้งหมด เช่น 
LazyVerticalGridและHorizontalPagerรวมถึงคอมโพเนนต์แบบ Lazy ที่กำหนดเองจากไลบรารี Wear และ TV ซึ่งทำได้ผ่านเมธอดส่วนขยายLazyPagingItemsระดับล่างใหม่itemKeyและitemContentTypeซึ่งช่วยให้คุณใช้พารามิเตอร์keyและcontentTypeกับ API มาตรฐานitemsที่มีอยู่แล้วสำหรับLazyColumn,LazyVerticalGridรวมถึง API ที่เทียบเท่ากัน เช่นHorizontalPager items(lazyPagingItems)และitemsIndexed(lazyPagingItems)ซึ่งรองรับเฉพาะLazyListScopeถูกเลิกใช้งานแล้ว
 - รองรับการแสดงตัวอย่างรายการข้อมูลปลอมโดยการสร้าง 
 - อาร์ติแฟกต์ 
paging-testingใหม่ซึ่งมี API ที่ออกแบบมาเพื่อการทดสอบหน่วยของแต่ละเลเยอร์ในแอปและการผสานรวมกับ Paging โดยแยกกัน ตัวอย่างเช่น ข้อมูลต่อไปนี้TestPagerคลาสที่ช่วยให้คุณตรวจสอบลักษณะการทำงานของการติดตั้งใช้งานPagingSourceที่กำหนดเองได้โดยไม่ขึ้นอยู่กับ Pager และ UI จริง- 
asPagingSourceFactoryAPI เพื่อแปลงFlow<List<Value>>หรือList<Value>แบบคงที่ให้เป็นPagingSourceFactoryที่ส่งไปยัง Pager ในการทดสอบได้ asSnapshotส่วนขยาย Kotlin ในFlow<PagingData<Value>>ซึ่งจะแปลFlow<PagingData<Value>>เป็นList<Value>โดยตรงasSnapshot lambdaช่วยให้คุณเลียนแบบ UI ของแอปผ่าน API เช่นscrollToหรือappendScrollWhileเพื่อให้คุณยืนยันได้ว่าสแนปชอตของข้อมูลถูกต้อง ณ จุดใดก็ตามในชุดข้อมูลแบบแบ่งหน้า
 - เพิ่มบันทึกเริ่มต้นเพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องของการแบ่งหน้าใน 2 ระดับ ได้แก่ 
VERBOSEและDEBUGคุณเปิดใช้บันทึกได้ผ่านคำสั่งadb shell setprop log.tag.Paging [DEBUG|VERBOSE]ซึ่งใช้ได้กับทั้งการแบ่งหน้าด้วย View หรือการแบ่งหน้าด้วย Compose - เพิ่มตัวสร้างสำหรับ 
PagingDataAdapterและAsyncPagingDataDifferซึ่งยอมรับCoroutineContextแทนCoroutineDispatcher - เพิ่ม
PagingSourceFactoryอินเทอร์เฟซฟังก์ชันใหม่ที่ให้พื้นผิว API ที่ชัดเจนกว่า Lambda ก่อนหน้า () ->PagingSourceคุณใช้ Factory นี้เพื่อสร้างอินสแตนซ์ของ Pager ได้ 
เวอร์ชัน 3.2.0-rc01
21 มิถุนายน 2023
androidx.paging:paging-*:3.2.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-rc01 มีคอมมิตต่อไปนี้
การมีส่วนร่วมภายนอก
เวอร์ชัน 3.2.0-beta01
7 มิถุนายน 2023
androidx.paging:paging-*:3.2.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-beta01 มีคอมมิตต่อไปนี้
การแบ่งหน้าใน Compose
- Paging Compose ได้บรรลุความเสถียรของ API อย่างเป็นทางการแล้ว ดังนั้น เราจึงอัปเดตเวอร์ชันจาก 
1.0.0-alpha20ให้ตรงกับเวอร์ชันของอาร์ติแฟกต์การแบ่งหน้าอื่นๆ ทั้งหมด 
การเปลี่ยนแปลง API
- นำ API 
items(LazyPagingItems)และitemsIndexed(LazyPagingItems)ที่เลิกใช้งานแล้วออกจาก Paging Compose ดูตัวอย่าง API ที่ใช้แทนได้ในบันทึกประจำรุ่นของ Paging Compose1.0.0-alpha20(I9626e) 
เวอร์ชัน 3.2.0-alpha06
24 พฤษภาคม 2023
androidx.paging:paging-*:3.2.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
PagingSourceFactoryอินเทอร์เฟซฟังก์ชันใหม่ที่ให้พื้นผิว API ที่ชัดเจนกว่า() -> PagingSourceLambda ที่มีอยู่ คุณสามารถใช้ Factory นี้เพื่อสร้างอินสแตนซ์ของPager(I33165, b/280655188) - เพิ่ม 
paging-testingAPI ใหม่ของList<Value>.asPagingSourceFactory()เพื่อรับPagingSourceFactoryที่โหลดจากรายการข้อมูลที่ไม่เปลี่ยนแปลงเท่านั้น คุณยังคงควรใช้ส่วนขยายที่มีอยู่บนFlow<List<Value>>เพื่อทดสอบกับข้อมูลแบบคงที่หลายรุ่น (Id34d1, b/280655188) 
การเปลี่ยนแปลง API
- ตอนนี้เราได้ใส่คำอธิบายประกอบ 
@VisibleForTestingใน API สาธารณะทั้งหมดในการทดสอบการแบ่งหน้าเพื่อให้มั่นใจว่า API เหล่านี้จะใช้ในการทดสอบเท่านั้น (I7db6e) asSnapshotAPI ไม่จำเป็นต้องส่งCoroutineScopeอีกต่อไป ตอนนี้ค่าเริ่มต้นคือการใช้บริบทที่รับช่วงมาจากขอบเขตระดับบน (Id0a78, b/282240990)- จัดเรียงพารามิเตอร์ของตัวสร้าง 
TestPagerใหม่ให้ตรงกับลำดับของพารามิเตอร์ของตัวสร้างPagerจริงอย่างเป็นธรรมชาติ (I6185a) - การใช้ประเภท Lambda 
() -> PagingSource<Key, Value>ของการทดสอบการแบ่งหน้าที่ย้ายข้อมูลแล้วเป็นประเภทPagingSourceFactory<Key, Value>(I4a950, b/280655188) 
การเปลี่ยนแปลงลักษณะการทำงาน
- ไม่จำเป็นต้องใช้โปรแกรมจัดสรรหลักเพื่อเรียกใช้
asSnapshotการทดสอบการเพจอีกต่อไป การตั้งค่านี้จะไม่เปลี่ยนแปลงลักษณะการทำงานของการทดสอบอีกต่อไป (Ie56ea) 
เวอร์ชัน 3.2.0-alpha05
3 พฤษภาคม 2023
androidx.paging:paging-*:3.2.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Paging Testing API ของ 
asSnapshotจะตั้งค่าเริ่มต้นของพารามิเตอร์loadOperationsเป็น Lambda ว่าง ซึ่งช่วยให้เรียกใช้asSnapshotได้โดยไม่ต้องส่งการดำเนินการโหลดใดๆ เพื่อดึงข้อมูลจากการโหลดการรีเฟรชครั้งแรก (Ied354, b/277233770) 
การปรับปรุงเอกสารประกอบ
- อัปเดตเอกสารประกอบเกี่ยวกับ 
asPagingSourceFactory()เพื่อชี้แจงว่าเป็นวิธีการขยายในFlowซึ่งจะแสดงผลโรงงานที่นำกลับมาใช้ใหม่ได้สำหรับการสร้างอินสแตนซ์PagingSource(I5ff4f, I705b5) - อัปเดตเอกสารประกอบเกี่ยวกับ
LoadResult.Pageตัวสร้างเพื่อชี้แจงความจำเป็นในการลบล้างitemsBeforeและitemsAfterเพื่อรองรับการข้าม (Ied354) 
การมีส่วนร่วมภายนอก
- ขอขอบคุณ Veyndan ที่ช่วยให้ Paging ไม่ต้องพึ่งพา Android/JVM อีกต่อไป (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493)
 
เวอร์ชัน 3.2.0-alpha04
8 กุมภาพันธ์ 2023
androidx.paging:paging-*:3.2.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha04 มีคอมมิตเหล่านี้
การทดสอบการแบ่งหน้า
- ตอนนี้อาร์ติแฟกต์ 
paging-testingมีเมธอดasPagingSourceFactoryสำหรับสร้างpagingSourceFactoryจากFlow<List<Value>>เพื่อส่งไปยัง PagerList<Value>>แต่ละรายการที่ปล่อยออกมาจาก Flow จะแสดงถึงการสร้างข้อมูลที่แบ่งหน้า ซึ่งช่วยให้ทดสอบการแบ่งหน้าได้ เช่นPagingDataการแปลงโดยการจำลองแหล่งข้อมูลเพื่อให้ Pager รวบรวมข้อมูล (I6f230, b/235528239) เราได้ขยาย
paging-testingอาร์ติแฟกต์ด้วย API ใหม่ที่เหมาะสำหรับการยืนยันว่าข้อมูลที่อยู่ในFlow<PagingData<T>>นั้นถูกต้อง ซึ่งสามารถใช้เพื่อยืนยันเอาต์พุตของFlow<PagingData<T>>จากเลเยอร์ ViewModel ได้ เป็นต้นซึ่งทำได้ผ่าน
asSnapshotส่วนขยาย Kotlin ในFlow<PagingData<Value>>ซึ่งจะแปลFlow<PagingData<Value>>เป็นList<Value>โดยตรงasSnapshotLambda ช่วยให้คุณจำลอง UI ของแอปผ่าน API เช่นscrollToหรือappendScrollWhileในลักษณะที่ทำซ้ำได้และสอดคล้องกัน เพื่อให้คุณยืนยันสแนปชอตของข้อมูลได้ทุกเมื่อในชุดข้อมูลที่แบ่งหน้า// 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 valuesasSnapshotเป็นวิธีการsuspendที่คาดว่าจะดำเนินการภายในrunTestดูข้อมูลเพิ่มเติมได้ที่การทดสอบโครูทีน Kotlin ใน Android (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic1238, I96def, b/235528239)
การเปลี่ยนแปลง API
- ตอนนี้การเรียก UI ไปยัง 
getItemและpeekในAsyncPagingDataDifferและPagingDataAdapterจะมีเครื่องหมายระบุอย่างถูกต้องว่าเรียกได้เฉพาะในเทรดหลักเท่านั้น (I699b6) - นำไวลด์การ์ดออกจากประเภททั่วไปที่ใช้โดย 
TestPagerเพื่อให้ใช้ผลลัพธ์ของเมธอดเหล่านั้นในโค้ดที่เขียนด้วยภาษาการเขียนโปรแกรม Java ได้ง่ายขึ้น (I56c42) 
เวอร์ชัน 3.2.0-alpha03
24 ตุลาคม 2022
androidx.paging:paging-*:3.2.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha03 มีคอมมิตต่อไปนี้
การทดสอบการแบ่งหน้า
รุ่นนี้มีอาร์ติแฟกต์ใหม่คือ paging-testing อาร์ติแฟกต์นี้มี API ที่ออกแบบมาเพื่อการทดสอบหน่วยของแต่ละเลเยอร์ในแอปและการผสานรวมกับ Paging โดยแยกกัน
เช่น รุ่นแรกนี้มีTestPagerคลาสPagingSourceที่ช่วยให้คุณตรวจสอบลักษณะการทำงานของการติดตั้งใช้งาน Pager ที่กำหนดเองได้โดยอิสระจาก PagingSource และ UI จริงที่คุณมักจะต้องจำลองการผสานรวมการแบ่งหน้าแบบครบวงจร
TestPager ควรพิจารณาว่าเป็นของปลอม ซึ่งเป็นการทดสอบแบบคู่ที่จำลองการใช้งานจริงของ Pager ในขณะที่ให้พื้นผิว API ที่เรียบง่ายสำหรับการทดสอบ PagingSource API เหล่านี้คือ suspend API และควรเรียกใช้ภายใน runTest ตามที่ระบุไว้ในคู่มือสำหรับการทดสอบโครูทีน Kotlin ใน Android
ตัวอย่างการใช้งาน API เหล่านี้ดูได้ในroom-pagingการทดสอบ ซึ่งได้รับการปรับโครงสร้างใหม่ให้ใช้ TestPager
การเปลี่ยนแปลง API
- ช่วยให้ทำซ้ำได้อย่างสะดวกใน 
LoadResult.Page.dataถึงLoadResult.Page.iterator()ซึ่งจะช่วยให้ใช้เมธอด Kotlin Standard Libraryflattenได้โดยอ้อมเมื่อได้รับList<LoadResult.Page>เช่น พร็อพเพอร์ตี้pagesของPagingStateที่ส่งไปยังเมธอดPagingSource.getRefreshKey(Ie0718) 
เวอร์ชัน 3.2.0-alpha02
10 สิงหาคม 2022
androidx.paging:paging-*:3.2.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้การแบ่งหน้าจะให้บันทึกผ่านคลาส 
AsyncPagingDataDifferหรือPagingDataAdapterเพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องที่รวบรวมจากPagingData - คุณเปิดใช้บันทึกได้ผ่านคำสั่ง 
adb shelladb shell setprop log.tag.Paging [DEBUG|VERBOSE].(b/235527159) 
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดเกี่ยวกับตัวสร้าง 
PagingDataDifferที่ขาดหายไปเมื่อใช้paging-common:3.2.0-alpha01กับรันไทม์paging-runtime:3.1.1หรือเก่ากว่า (b/235256201) 
เวอร์ชัน 3.2.0-alpha01
1 มิถุนายน 2022
androidx.paging:paging-*:3.2.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.2.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มตัวสร้างสำหรับ 
PagingDataAdapterและAsyncPagingDataDifferซึ่งยอมรับCoroutineContextแทนCoroutineDispatcher(Idc878) - โดยค่าเริ่มต้น 
PagingData.from()และPagingData.empty()จะไม่มีผลกับCombinedLoadStatesในฝั่งผู้นำเสนออีกต่อไป ระบบได้เพิ่มการโอเวอร์โหลดใหม่ที่อนุญาตให้ส่งsourceLoadStatesและremoteLoadStatesไปยังตัวสร้างเหล่านี้เพื่อรักษาลักษณะการทำงานที่มีอยู่ในการตั้งค่าLoadStatesให้เป็นเทอร์มินัลอย่างสมบูรณ์ (เช่นNotLoading(endOfPaginationReached = false)) โดยมีตัวเลือกในการรวมสถานะระยะไกลด้วยหากจำเป็น หากไม่ได้ส่งLoadStatesระบบจะคงCombinedLoadStatesก่อนหน้าไว้ที่ฝั่งผู้นำเสนอเมื่อได้รับPagingDataแบบคงที่ (Ic3ce5, b/205344028) 
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะจัดลำดับความสำคัญของผลลัพธ์ของ 
PagingSource.getRefreshKey()เหนือinitialKeyอย่างถูกต้องในกรณีที่แสดงผลเป็น Null แต่มีการตั้งค่าinitialKeyที่ไม่ใช่ Null (Ic9542, b/230391606) 
การมีส่วนร่วมภายนอก
- อัปเดต :compose:ui:ui-test API (updateApi) เนื่องจากการย้ายข้อมูล test-coroutines-lib (I3366d)
 
เวอร์ชัน 3.1
เวอร์ชัน 3.1.1
9 มีนาคม 2022
androidx.paging:paging-*:3.1.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- นำเหตุการณ์ 
LoadState.NotLoadingระดับกลางระหว่างรุ่นที่.cachedIn()แทรกอย่างไม่ถูกต้องออก การเปลี่ยนแปลงนี้ช่วยให้ตอบสนองต่อLoadStateการเปลี่ยนแปลงได้ง่ายขึ้นมากด้วยการนำเหตุการณ์LoadState.NotLoadingที่ซ้ำซ้อนออก ซึ่งเหตุการณ์เหล่านี้เกิดขึ้นระหว่างการลองโหลดที่ล้มเหลวซ้ำ เมื่อรีเฟรช หรือระหว่างการล้างข้อมูล 
เวอร์ชัน 3.1.0
17 พฤศจิกายน 2021
androidx.paging:paging-*:3.1.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 3.0.0
Flow<PagingData>.observableและFlow<PagingData>.flowableAPI ไม่ใช่เวอร์ชันทดลองอีกต่อไป- การเปลี่ยนแปลงลักษณะการทำงานของ 
LoadState- ตอนนี้ 
endOfPaginationReachedจะเป็นfalseเสมอสำหรับLoadType.REFRESHทั้งPagingSourceและRemoteMediator LoadStatesจากการแบ่งหน้าจะรอค่าที่ถูกต้องจากทั้งPagingSourceและRemoteMediatorก่อนที่จะส่งต่อลงไป ตอนนี้PagingDataรุ่นใหม่จะเริ่มต้นด้วยLoadingสำหรับสถานะรีเฟรชอย่างถูกต้องเสมอแทนที่จะรีเซ็ตเป็นNotLoadingอย่างไม่ถูกต้องในบางกรณี.loadStateFlowและ.addLoadStateListenerใน API ของผู้แสดงจะไม่ส่งCombinedLoadStatesเริ่มต้นที่ตั้งค่าสถานะตัวกลางเป็นnullซ้ำซ้อนอีกต่อไป
 - ตอนนี้ 
 - การยกเลิกในรุ่นที่ผ่านมาจะเกิดขึ้นทันทีเมื่อมีการลบล้าง / สร้างใหม่ คุณไม่จำเป็นต้องใช้ 
.collectLatestในFlow<PagingData>อีกต่อไป แม้ว่าเราจะยังคงแนะนำให้ทำเช่นนั้นก็ตาม PagingSource.LoadResult.Invalidได้รับการเพิ่มเป็นประเภทการคืนค่าใหม่จากPagingSource.loadซึ่งทำให้ Paging ทิ้งคำขอโหลดที่รอดำเนินการหรือในอนาคตไปยังPagingSourceนี้และทำให้คำขอดังกล่าวไม่ถูกต้อง ประเภทการคืนค่านี้ออกแบบมาเพื่อจัดการข้อมูลที่อาจไม่ถูกต้องหรือล้าสมัยซึ่งอาจส่งคืนจากฐานข้อมูลหรือเครือข่าย- เพิ่ม API ของผู้นำเสนอ 
.onPagesPresentedและ.addOnPagesUpdatedListenerซึ่งจะทริกเกอร์พร้อมกันเมื่อมีการนำเสนอหน้าต่างๆ ใน UI การอัปเดตหน้าเว็บอาจเกิดขึ้นในสถานการณ์ต่อไปนี้- การโหลด PagingData รุ่นใหม่ครั้งแรกเสร็จสมบูรณ์ ไม่ว่ารุ่นใหม่จะมีรายการที่แสดงที่มีการเปลี่ยนแปลงหรือไม่ก็ตาม เช่น รุ่นใหม่ที่โหลดครั้งแรกโดยไม่มีการอัปเดตเนื่องจากรายการเหมือนกันทุกประการจะยังคงทริกเกอร์การเรียกกลับนี้
 - ระบบจะแทรกหน้า แม้ว่าหน้าที่จะแทรกจะไม่มีรายการใหม่ก็ตาม
 - ระบบจะทิ้งหน้าเว็บ แม้ว่าหน้าเว็บที่ทิ้งจะว่างเปล่าก็ตาม
 
 
เวอร์ชัน 3.1.0-rc01
3 พฤศจิกายน 2021
androidx.paging:paging-*:3.1.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข Race Condition + Memory Leak ใน .cachedIn() ในกรณีที่ Paging ส่งเหตุการณ์การโหลดหลายรายการไปยังดาวน์สตรีมในขณะที่ไม่มี Observer หรือระหว่างที่ Observer สลับไปใช้ PagingData ใหม่ (Ib682e)
 
เวอร์ชัน 3.1.0-beta01
13 ตุลาคม 2021
androidx.paging:paging-*:3.1.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-beta01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การเข้าถึงรายการอย่างรวดเร็วหลายครั้งอาจทำให้ระบบไม่พิจารณารายการเหล่านั้นใน prefetchDistance ซึ่งทำให้การโหลดหน้าเว็บหยุดชะงัก ปัญหานี้จะเกิดขึ้นโดยเฉพาะเมื่อมีการวางไอเทมจำนวนมากพร้อมกันในลำดับที่ให้ความสำคัญกับการโหลดตามทิศทางการเลื่อนของผู้ใช้ ตอนนี้การเข้าถึงรายการเหล่านี้จะได้รับการบัฟเฟอร์และจัดลำดับความสำคัญแบบซิงโครนัสเพื่อป้องกันไม่ให้รายการหลุด (aosp/1833273)
 
เวอร์ชัน 3.1.0-alpha04
29 กันยายน 2021
androidx.paging:paging-*:3.1.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- API ของ 
Flow<PagingData>.observableและFlow<PagingData>.flowableไม่ใช่เวอร์ชันทดลองอีกต่อไป (Ie0bdd) 
การแก้ไขข้อบกพร่อง
- สำหรับ LoadStates ตอนนี้ 
endOfPaginationReachedจะเป็นfalseสำหรับLoadType.REFRESHเสมอ ก่อนหน้านี้trueendOfPaginationReachedREFRESHอาจเป็นจริงสำหรับ RemoteMediator แต่ไม่ใช่สำหรับ PagingSource ตอนนี้ลักษณะการทำงานนี้ได้รวมเข้าด้วยกันเพื่อให้แสดงผลเป็นfalseเสมอ เนื่องจากไม่สมเหตุสมผลที่ REFRESH จะเป็นเทอร์มินัล และตอนนี้ได้ บันทึกเป็นส่วนหนึ่งของสัญญา API ใน LoadStates แล้ว เมื่อตัดสินใจว่าจะสิ้นสุดการแบ่งหน้าหรือไม่ คุณควรพิจารณาโดยอิงตามทิศทาง APPEND หรือ PREPEND เสมอ (I047b6) ตอนนี้ LoadStates จากการแบ่งหน้าจะรอค่าที่ถูกต้องจากทั้ง PagingSource และ RemoteMediator ก่อนที่จะปล่อยลงมาที่สตรีมระหว่างรุ่นต่างๆ ซึ่งจะป้องกันไม่ให้ PagingData รุ่นใหม่ส่ง NotLoading ใน CombinedLoadStates.source.refresh หากเป็น Loading อยู่แล้ว ตอนนี้ PagingData รุ่นใหม่จะเริ่มต้นด้วย Loading สำหรับสถานะการรีเฟรชอย่างถูกต้องเสมอ แทนที่จะรีเซ็ตเป็น NotLoading อย่างไม่ถูกต้องในบางกรณี
การยกเลิกในรุ่นที่ผ่านมาจะเกิดขึ้นทันทีเมื่อมีการลบล้าง/ รุ่นใหม่ คุณไม่จำเป็นต้องใช้ .collectLatest ใน
Flow<PagingData>อีกต่อไป แต่เรายังคงแนะนำให้ทำเช่นนั้น (I0b2b5, b/177351336, b/195028524).loadStateFlowและ.addLoadStateListenerใน Presenter API จะไม่ส่งCombinedLoadStatesเริ่มต้นที่ตั้งค่าสถานะตัวกลางเป็นnullและตั้งค่าสถานะแหล่งที่มาเป็นNotLoading(endOfPaginationReached = false)ซ้ำอีกต่อไป ซึ่งหมายความว่า- ระบบจะป้อนข้อมูลสถานะของสื่อกลางเสมอหากคุณใช้ RemoteMediator
 - การลงทะเบียนเครื่องมือฟัง loadState ใหม่หรือตัวรวบรวมใหม่ใน
.loadStateFlowจะไม่ปล่อยค่าปัจจุบันในทันทีอีกต่อไป หากยังไม่ได้รับCombinedLoadStatesจริงจากPagingDataซึ่งอาจเกิดขึ้นหากผู้รวบรวมหรือ Listener เริ่มทำงาน ก่อนที่จะส่งPagingData(I1a748) 
เวอร์ชัน 3.1.0-alpha03
21 กรกฎาคม 2021
androidx.paging:paging-*:3.1.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่มประเภทการคืนค่า LoadResult ของบุคคลที่สาม LoadResult.Invalid ลงใน PagingSource เมื่อ PagingSource.load แสดงผล LoadResult.Invalid การแบ่งหน้าจะทิ้งข้อมูลที่โหลดแล้วและ ทำให้ PagingSource ไม่ถูกต้อง ประเภทการคืนค่านี้ออกแบบมาเพื่อ จัดการข้อมูลที่อาจไม่ถูกต้องหรือล้าสมัยซึ่งอาจส่งคืน จากฐานข้อมูลหรือเครือข่าย
ตัวอย่างเช่น หากมีการเขียนลงในฐานข้อมูลพื้นฐาน แต่ PagingSource ไม่ทำให้เป็นโมฆะได้ทันเวลา อาจทำให้ได้ผลลัพธ์ที่ไม่สอดคล้องกันหากการใช้งานขึ้นอยู่กับ ความคงที่ของชุดข้อมูลสำรองที่โหลดจาก (เช่น การติดตั้งใช้งานฐานข้อมูลรูปแบบ LIMIT OFFSET) ในสถานการณ์นี้ เราขอแนะนำให้ตรวจสอบการลบล้างหลังจากโหลดและส่งคืน LoadResult.Invalid ซึ่งจะทำให้ Paging ทิ้งคำขอโหลดที่รอดำเนินการหรือในอนาคตไปยัง PagingSource นี้และลบล้าง
นอกจากนี้ Paging2 API ยังรองรับประเภทการคืนค่านี้ด้วย ซึ่งใช้ประโยชน์จาก LivePagedList หรือ RxPagedList เมื่อใช้ PagingSource กับ API ของ PagedList ใน Paging2 ระบบจะยกเลิกการเชื่อมต่อ PagedList ทันที ซึ่งจะหยุดความพยายามในการโหลดข้อมูลใน PagedList นี้เพิ่มเติม และทริกเกอร์การลบล้างใน PagingSource
LoadResult เป็นคลาสที่ปิดผนึก ซึ่งหมายความว่านี่เป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มา ดังนั้น Use Case ที่ใช้ผลลัพธ์ PagingSource.load โดยตรงจะต้องจัดการ LoadResult.Invalid ในเวลาคอมไพล์ ตัวอย่างเช่น ผู้ใช้ Kotlin ที่ใช้ประโยชน์จาก exhaustive-when เพื่อตรวจสอบประเภทการคืนค่าจะต้องเพิ่มการตรวจสอบ สำหรับประเภทที่ไม่ถูกต้อง (Id6bd3, b/191806126, b/192013267)
การแก้ไขข้อบกพร่อง
- ตอนนี้การเรียกกลับการลบล้างที่เพิ่มผ่าน PagingSource.registerInvalidatedCallback หรือ DataSource.addInvalidatedCallback จะทริกเกอร์โดยอัตโนมัติหากมีการลงทะเบียนใน PagingSource / DataSource ที่ไม่ถูกต้องอยู่แล้ว การเปลี่ยนแปลงนี้จะแก้ไขสภาวะการแข่งขันที่ทำให้การแบ่งหน้าทิ้งสัญญาณการลบล้างและค้างเมื่อระบุแหล่งที่มาซึ่งไม่ถูกต้องอยู่แล้วในระหว่างการโหลดครั้งแรก นอกจากนี้ ตอนนี้ระบบจะนำ การเรียกกลับ invalidate ออกอย่างถูกต้องหลังจากที่ทริกเกอร์แล้ว เนื่องจากรับประกันได้ว่าจะมีการเรียกใช้เพียงครั้งเดียวเท่านั้น (I27e69)
 - การส่งค่าเริ่มต้นของตัวยึดตำแหน่ง (InitialPagedList) จากสตรีม PagedList ที่สร้างอินสแตนซ์ใหม่ เช่น LivePagedListBuilder หรือ RxPagedListBuilder จะไม่ล้างข้อมูลที่โหลดไว้ก่อนหน้านี้อีกต่อไป
 
เวอร์ชัน 3.1.0-alpha02
1 กรกฎาคม 2021
androidx.paging:paging-*:3.1.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มเครื่องมือฟังเหตุการณ์ onPagesPresented และ API ของ Flow Presenter ซึ่งจะทริกเกอร์ทันทีหลังจากที่อัปเดตหน้าเว็บที่แสดงใน UI
เนื่องจากการอัปเดตเหล่านี้จะซิงโครนัสกับ UI คุณจึงเรียกใช้เมธอดของอแดปเตอร์ เช่น .snapshot, .getItemCount เพื่อตรวจสอบสถานะหลังจากใช้การอัปเดตแล้วได้ โปรดทราบว่าเราปล่อยให้มีการเรียกใช้ .snapshot() อย่างชัดเจนเนื่องจากอาจมีค่าใช้จ่ายสูงหากทำทุกครั้งที่มีการอัปเดต
การอัปเดตหน้าเว็บอาจเกิดขึ้นในสถานการณ์ต่อไปนี้
- การโหลด PagingData รุ่นใหม่ครั้งแรกเสร็จสมบูรณ์ ไม่ว่ารุ่นใหม่จะมีรายการที่แสดงที่มีการเปลี่ยนแปลงหรือไม่ก็ตาม เช่น รุ่นใหม่ที่โหลดครั้งแรกเสร็จสมบูรณ์ โดยไม่มีการอัปเดตเนื่องจากรายการเหมือนกันทุกประการจะยังคง ทริกเกอร์การเรียกกลับนี้
 - ระบบจะแทรกหน้า แม้ว่าหน้าแทรกจะไม่มีรายการใหม่ ก็ตาม
 - ระบบจะทิ้งหน้า แม้ว่าหน้าดังกล่าวจะว่างเปล่า (I272c9, b/189999634)
 
การแก้ไขข้อบกพร่อง
- การเข้าถึง PagedList.dataSource จากค่าเริ่มต้นที่สร้างโดย LivePagedList หรือ RxPagedList จะไม่ทำให้เกิด IllegalStateException (I96707) อย่างไม่ถูกต้องอีกต่อไป
 
เวอร์ชัน 3.1.0-alpha01
2 มิถุนายน 2021
androidx.paging:paging-*:3.1.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.1.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- คลาสที่จัดโดย 
paging-rxjava3จะอยู่ภายใต้แพ็กเกจandroidx.paging.rxjava3เพื่อไม่ให้ขัดแย้งกับpaging-rxjava2(Ifa7f6) 
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่บางครั้งการแบ่งหน้าจะส่งเหตุการณ์ no-op differ ไปยัง RecyclerView ซึ่งอาจทำให้ทริกเกอร์ Listener บางรายการ ก่อนเวลาอันควร (Ic507f, b/182510751)
 
การมีส่วนร่วมภายนอก
- เพิ่ม API ความเข้ากันได้ของ PagedList ที่เลิกใช้งานแล้วลงในอาร์ติแฟกต์ rxjava3 (Id1ce2, b/182497591)
 
Paging Compose เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0-alpha20
24 พฤษภาคม 2023
androidx.paging:paging-compose:1.0.0-alpha20 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha20 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ Paging Compose รองรับการแสดงตัวอย่างรายการข้อมูลจำลองโดยการสร้าง 
PagingData.from(fakeData)และการห่อPagingDataนั้นในMutableStateFlow(เช่นMutableStateFlow(PagingData.from(listOf(1, 2, 3)))) การใช้ข้อมูลดังกล่าวเป็นอินพุตใน@PreviewการเรียกไปยังcollectAsLazyPagingItems()จะแสดงLazyPagingItemsที่ดูตัวอย่างได้ (I8a78d, b/194544557) 
การแก้ไขข้อบกพร่อง
- ตอนนี้ข้อมูลที่แคชจาก 
pager.flow.cachedInซึ่งรวบรวมไว้ในLazyPagingItemsจะพร้อมใช้งานทันทีหลังจากการกู้คืนสถานะโดยไม่ต้องมีการรวบรวมข้อมูลแบบไม่พร้อมกัน ซึ่งหมายความว่าข้อมูลที่แคชไว้จะพร้อมสำหรับการนำเสนอทันทีที่จัดองค์ประกอบครั้งแรกหลังจากกู้คืนสถานะแล้ว (I97a60, b/177245496) 
เวอร์ชัน 1.0.0-alpha19
3 พฤษภาคม 2023
androidx.paging:paging-compose:1.0.0-alpha19 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha19 มีคอมมิตเหล่านี้
รองรับเลย์เอาต์แบบเลื่อนทั้งหมด
ก่อนหน้านี้ Paging Compose มีส่วนขยาย items และ itemsIndexed ที่กำหนดเองใน LazyListScope ซึ่งหมายความว่าคุณไม่สามารถใช้ Paging Compose กับเลย์เอาต์แบบ Lazy อื่นๆ เช่น LazyVerticalGrid, HorizontalPager หรือคอมโพเนนต์แบบ Lazy ที่กำหนดเองอื่นๆ ที่ไลบรารี Wear และ TV มีให้ การแก้ไขความไม่ยืดหยุ่นนี้เป็นการอัปเดตหลักสำหรับการเปิดตัวนี้
เราจำเป็นต้องสร้าง API ในเลเยอร์อื่นเพื่อรองรับเลย์เอาต์แบบเลซี่เพิ่มเติม แทนที่จะให้ items API ที่กำหนดเองสำหรับเลย์เอาต์แบบเลซี่แต่ละรายการ ตอนนี้ Paging Compose มีเมธอดส่วนขยายระดับต่ำกว่าเล็กน้อยใน LazyPagingItems ใน itemKey และ itemContentType API เหล่านี้มุ่งเน้นการช่วยคุณใช้พารามิเตอร์ key และ contentType กับ API มาตรฐาน items ที่มีอยู่แล้วสําหรับ LazyColumn, LazyVerticalGrid รวมถึงพารามิเตอร์ที่เทียบเท่าใน API เช่น HorizontalPager (Ifa13b, Ib04f0, b/259385813)
ซึ่งหมายความว่าการรองรับ LazyVerticalGrid จะมีลักษณะดังนี้
// 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)
  }
}
ดูตัวอย่างเพิ่มเติมเกี่ยวกับการใช้ API ใหม่เหล่านี้ได้ที่ตัวอย่างของเรา
แม้ว่าการเปลี่ยนแปลงเหล่านี้จะทำให้ตัวอย่าง LazyColumn และ LazyRow ยาวขึ้น 2-3 บรรทัด แต่เราคิดว่าความสอดคล้องในเลย์เอาต์แบบ Lazy ทั้งหมดเป็นปัจจัยสำคัญสำหรับผู้ที่ใช้ Paging Compose ในอนาคต ด้วยเหตุนี้ เราจึงเลิกใช้งานส่วนขยายที่มีอยู่สำหรับ LazyListScope แล้ว (I0c459, I92c8f, b/276989796)
การเปลี่ยนแปลง API
- เพื่ออำนวยความสะดวกในการย้ายข้อมูลไปยัง API ใหม่ ฟังก์ชันส่วนขยาย 
itemsและitemsIndexedในLazyListScopeจึงรองรับพารามิเตอร์contentTypeซึ่งเป็นการจำลองการรองรับใน API ใหม่ (Ib1918, b/255283378) 
การอัปเดตการขึ้นต่อกัน
- Paging Compose ได้อัปเดตการอ้างอิงจาก Compose 1.0.5 เป็น Compose 1.2.1 แล้ว (Ib1918, b/255283378)
 
เวอร์ชัน 1.0.0-alpha18
8 กุมภาพันธ์ 2023
androidx.paging:paging-compose:1.0.0-alpha18 จะได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลง เวอร์ชัน 1.0.0-alpha18 มีคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha17
24 ตุลาคม 2022
androidx.paging:paging-compose:1.0.0-alpha17 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha17 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับ 
CoroutineContextที่กำหนดเองเมื่อโทรหาcollectLazyPagingItems(I7a574, b/243182795, b/233783862) 
เวอร์ชัน 1.0.0-alpha16
10 สิงหาคม 2022
androidx.paging:paging-compose:1.0.0-alpha16 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha16 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ Paging มีบันทึกผ่านคลาส 
LazyPagingItemsเพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องที่รวบรวมจาก PagingData - คุณเปิดใช้บันทึกได้ผ่านคำสั่ง 
adb shelladb shell setprop log.tag.Paging [DEBUG|VERBOSE]([b/235527159}(https://issuetracker.google.com/issues/235527159)) 
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดเกี่ยวกับตัวสร้าง 
PagingDataDifferที่ขาดหายไปเมื่อใช้paging-compose:1.0.0-alpha15กับpaging-common:3.1.1หรือเวอร์ชันที่เก่ากว่า (b/235256201,b/239868768) 
เวอร์ชัน 1.0.0-alpha15
1 มิถุนายน 2022
androidx.paging:paging-compose:1.0.0-alpha15 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha15 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มตัวสร้างสำหรับ 
PagingDataAdapterและAsyncPagingDataDifferซึ่งยอมรับCoroutineContextแทนCoroutineDispatcher(Idc878) 
การแก้ไขข้อบกพร่อง
LazyPagingItemsจะตั้งค่าloadStateเริ่มต้นให้มีการรีเฟรชLoadState.Loading(I55043, b/224855902)
เวอร์ชัน 1.0.0-alpha14
13 ตุลาคม 2021
androidx.paging:paging-compose:1.0.0-alpha14 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha14 มีคอมมิตต่อไปนี้
เวอร์ชัน 1.0.0-alpha13
29 กันยายน 2021
androidx.paging:paging-compose:1.0.0-alpha13 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha13 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ฟังก์ชัน 
LazyPagingItems.snapshot()ถูกแทนที่ด้วยพร็อพเพอร์ตี้LazyPagingItems.itemSnapshotList(Ie2da8) - นำ 
LazyPagingItems.getAsState()ที่เลิกใช้งานแล้วออก (Ie65e4) 
เวอร์ชัน 1.0.0-alpha12
21 กรกฎาคม 2021
androidx.paging:paging-compose:1.0.0-alpha12 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
items(lazyPagingItems)และitemsIndexed(lazyPagingItems)ที่ใช้เชื่อมต่อการแบ่งหน้ากับLazyColumn/Rowตอนนี้ยอมรับพารามิเตอร์คีย์ตัวเลือกแล้ว ซึ่งช่วยให้คุณระบุคีย์ที่เสถียรซึ่งแสดงถึงรายการได้ อ่านเพิ่มเติมเกี่ยวกับคีย์ได้ที่นี่ (I7986d)- ตอนนี้ฟังก์ชัน 
lazyPagingItems.getAsState(index)เลิกใช้งานแล้ว โปรดใช้lazyPagingItems[index]แทน (I086cb, b/187339372) 
เวอร์ชัน 1.0.0-alpha11
30 มิถุนายน 2021
androidx.paging:paging-compose:1.0.0-alpha11 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha10
2 มิถุนายน 2021
androidx.paging:paging-compose:1.0.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha09
18 พฤษภาคม 2021
androidx.paging:paging-compose:1.0.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- ตอนนี้ itemCount และตัวรับรายการของ LazyPagingItems สามารถสังเกตได้แล้ว ซึ่งทำให้ใช้กับ LazyVerticalGrid ได้ด้วย (Ie2446, b/171872064, b/168285687)
 
ความเข้ากันได้ของ Compose
androidx.paging:paging-compose:1.0.0-alpha09ใช้ได้กับ Compose เวอร์ชัน1.0.0-beta07ขึ้นไปเท่านั้น
เวอร์ชัน 1.0.0-alpha08
24 กุมภาพันธ์ 2021
androidx.paging:paging-compose:1.0.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
อัปเดตเพื่อผสานรวมกับ Compose 1.0.0-beta01
เวอร์ชัน 1.0.0-alpha07
10 กุมภาพันธ์ 2021
androidx.paging:paging-compose:1.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
อัปเดตเพื่อผสานรวมกับ Compose alpha12
เวอร์ชัน 1.0.0-alpha06
28 มกราคม 2021
androidx.paging:paging-compose:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
อัปเดตให้ขึ้นอยู่กับ Compose 1.0.0-alpha11
เวอร์ชัน 1.0.0-alpha05
13 มกราคม 2021
androidx.paging:paging-compose:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้
อัปเดตให้ขึ้นอยู่กับ Compose 1.0.0-alpha10
เวอร์ชัน 1.0.0-alpha04
16 ธันวาคม 2020
androidx.paging:paging-compose:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- อัปเดตพร็อพเพอร์ตี้ความสะดวก
CombinedLoadStates.refresh,CombinedLoadStates.prependCombinedLoadStates.appendให้เปลี่ยนจากLoadingเป็นNotLoadingเท่านั้น หลังจากที่ทั้งสถานะการโหลดของสื่อกลางและแหล่งที่มาเป็นNotLoadingเพื่อให้แน่ใจว่า การอัปเดตจากระยะไกลมีผลแล้ว (I65619) 
เวอร์ชัน 1.0.0-alpha03
2 ธันวาคม 2020
androidx.paging:paging-compose:1.0.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
- อัปเดตให้ตรงกับ Compose 1.0.0-alpha08
 
เวอร์ชัน 1.0.0-alpha02
11 พฤศจิกายน 2020
androidx.paging:paging-compose:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเมธอด 
.peek(),.snapshot(),.retry()และ.refresh()ลงในLazyPagingItems ซึ่งแสดงฟังก์ชันการทำงานเดียวกันกับที่มีในAsyncPagingDataDiffer/PagingDataAdapter(Iddfe8, b/172041660) 
เวอร์ชัน 1.0.0-alpha01
28 ตุลาคม 2020
androidx.paging:paging-compose:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
อาร์ติแฟกต์ paging-compose ช่วยให้ผสานรวมระหว่าง Paging Library กับ Jetpack Compose ได้ ตัวอย่างการใช้งานอย่างง่าย
  @Composable
  @OptIn(ExperimentalLazyDsl::class)
  fun ItemsDemo(flow: Flow<PagingData<String>>) {
      val lazyPagingItems = flow.collectAsLazyPagingItems()
      LazyColumn {
          items(lazyPagingItems) {
              Text("Item is $it")
          }
      }
  }
เวอร์ชัน 3.0.1
เวอร์ชัน 3.0.1
21 กรกฎาคม 2021
androidx.paging:paging-*:3.0.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- การเข้าถึง 
PagedList.dataSourceจากค่าเริ่มต้นที่สร้างโดยLivePagedListหรือRxPagedListจะไม่ทำให้เกิด IllegalStateException (I96707) อย่างไม่ถูกต้องอีกต่อไป 
เวอร์ชัน 3.0.0
เวอร์ชัน 3.0.0
5 พฤษภาคม 2021
androidx.paging:paging-*:3.0.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของเวอร์ชัน 3.0.0
API ที่มีอยู่ส่วนใหญ่จาก Paging 2.x.x ถูกเลิกใช้งานแล้วเพื่อรองรับ Paging 3 API ใหม่ที่จะนำการปรับปรุงต่อไปนี้มาให้
- รองรับ Kotlin Coroutines และ Flow อย่างเต็มที่
 - การสนับสนุนสำหรับการยกเลิก
 - สัญญาณสถานะการโหลดและข้อผิดพลาดในตัว
 - ฟังก์ชันลองอีกครั้ง + รีเฟรช
 - เราได้รวมคลาสย่อย DataSource ทั้ง 3 คลาสไว้ในคลาส PagingSource เดียว
 - การเปลี่ยนรูปแบบหน้าเว็บที่กำหนดเอง รวมถึงการเปลี่ยนรูปแบบในตัวสำหรับการเพิ่มตัวคั่น
 - ส่วนหัวและส่วนท้ายของสถานะการโหลด
 
เวอร์ชัน 3.0.0-rc01
21 เมษายน 2021
androidx.paging:paging-*:3.0.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่บางครั้งการแบ่งหน้าจะส่งเหตุการณ์ no-op differ ไปยัง RecyclerView ซึ่งอาจทำให้ทริกเกอร์ Listener บางรายการ ก่อนเวลาอันควร (Ic507f, b/182510751)
 
เวอร์ชัน 3.0.0-beta03
24 มีนาคม 2021
androidx.paging:paging-*:3.0.0-beta03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-beta03 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เราได้ปรับปรุงวิธีจัดการตัวยึดตำแหน่งเมื่อโหลดรายการซ้ำเพื่อป้องกันไม่ให้ RecyclerView ข้ามไปอย่างไม่คาดคิด ดูรายละเอียดได้ที่ NullPaddedDiffing.md (If1490, b/170027529, b/177338149)
 - ตัวสร้าง PagedList ต่างๆ (เส้นทางการทำงานร่วมกันแบบเดิม) จะไม่เรียก 
DataSource.Factory.create()ในเทรดหลักอย่างไม่ถูกต้องพร้อมกันอีกต่อไปเมื่อมีการเรียก.build()(b/182798948) 
เวอร์ชัน 3.0.0-beta02
10 มีนาคม 2021
androidx.paging:paging-*:3.0.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ส่วนขยาย Rx3 จะเผยแพร่
@ExperimentalCoroutinesApiข้อกำหนดในการเลือกใช้ได้อย่างถูกต้องแล้ว ก่อนหน้านี้มีการทำเครื่องหมายในเมธอด@getซึ่งคอมไพเลอร์ Kotlin จะไม่สนใจเนื่องจาก https://youtrack.jetbrains.com/issue/KT-45227 (I5733c) 
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
 - แก้ไขข้อบกพร่องที่ทำให้ 
PagingStateเป็นnullเสมอเมื่อมีการเรียกการรีเฟรชจากระยะไกล - แก้ไขข้อบกพร่องที่ทำให้ PagingSource แสดงหน้าว่างซึ่งอาจทำให้ Paging ดึงข้อมูลอีกครั้งไม่ได้เพื่อตอบสนอง 
prefetchDistanceซึ่งทำให้ Paging "ค้าง" 
เวอร์ชัน 3.0.0-beta01
10 กุมภาพันธ์ 2021
androidx.paging:paging-*:3.0.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Wrapper Rx2 และ Rx3 จะแสดงคำอธิบายประกอบเวอร์ชันทดลองที่ขึ้นอยู่กับคำอธิบายประกอบนั้น หากคุณใช้ Wrapper ที่เข้ากันได้กับ Rx ใน paging-rxjava2 หรือ
paging-rxjava3 ตอนนี้คุณจะต้องใส่คำอธิบายประกอบการใช้งานด้วย
@OptIn(ExperimentalCoroutinesApi::class)(Ib1f9d) 
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาด 
IndexOutOfBoundsException: Inconsistency detectedที่บางครั้งเกิดขึ้นเมื่อใช้ API ของ v2DataSourceผ่านเส้นทางความเข้ากันได้ isInvalidในระหว่างการเริ่มต้นของDataSourceเมื่อใช้ผ่านเส้นทางความเข้ากันได้จะเปิดใช้ใน fetchDispatcher อย่างถูกต้องแทนที่จะเป็นในเทรดหลัก การแก้ไขนี้จะช่วยแก้ปัญหาIllegalStateExceptionที่เกิดจากการเข้าถึง Db ในเทรดหลักเมื่อใช้การติดตั้งใช้งานPagingSourceของ Room
เวอร์ชัน 3.0.0-alpha13
27 มกราคม 2021
androidx.paging:paging-*:3.0.0-alpha13 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha13 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
PagingSource.getRefreshKeyไม่ใช่ตัวเลือกที่ไม่บังคับอีกต่อไป แต่เป็นฟังก์ชันนามธรรมที่ไม่มีการติดตั้งใช้งานเริ่มต้น ผู้ใช้ที่ย้ายข้อมูลสามารถเลือกที่จะใช้การติดตั้งใช้งานเริ่มต้นต่อไปได้ ซึ่งจะแสดงผลเป็นnullแต่getRefreshKey()ควรมีการติดตั้งใช้งานจริงที่แสดงผลคีย์ตามตำแหน่งการเลื่อนปัจจุบันของผู้ใช้ ซึ่งจะช่วยให้ Paging โหลดต่อไปได้ โดยมี Viewport เป็นศูนย์กลางผ่านPagingState.anchorPositionหากเป็นไปได้ (I4339a)- ตอนนี้ 
InvalidatingPagingSourceFactoryเป็นคลาสสุดท้ายแล้ว (Ia3b0a) - อนุญาตการกำหนดค่าลักษณะการทำงานของตัวคั่นเทอร์มินัล (ส่วนหัว / ส่วนท้าย)
ด้วยพารามิเตอร์ SeparatorType เพิ่มเติมที่ไม่บังคับ โดยมี 2 ตัวเลือกดังนี้
FULLY_COMPLETE- ลักษณะการทำงานที่มีอยู่ รอให้ทั้ง PagingSource และ RemoteMediator ทำเครื่องหมาย endOfPaginationReached ก่อนเพิ่มตัวคั่น เทอร์มินัล หากไม่ได้ใช้ RemoteMediator ระบบจะ ละเว้น loadState ระยะไกล ซึ่งจะมีประโยชน์หลักๆ ในกรณีที่คุณต้องการแสดงตัวคั่นส่วน เฉพาะเมื่อส่วนนั้นโหลดเสร็จสมบูรณ์แล้ว รวมถึงการดึงข้อมูลจาก แหล่งที่มาภายนอก เช่น เครือข่ายSOURCE_COMPLETE- รอให้ PagingSource ทำเครื่องหมาย endOfPaginationReached แม้ว่าจะใช้ RemoteMediator ก็ตาม ซึ่งจะช่วยให้แสดงส่วนหัวและส่วนท้ายพร้อมกับการโหลดครั้งแรกได้ ซึ่งจะช่วยให้ผู้ใช้ไม่ต้องเลื่อนเพื่อดูตัวคั่นสุดท้าย (Ibe993, b/174700218)
 
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาหน่วยความจำรั่วที่เกิดขึ้นได้ยากเมื่อมีการ ล้างค่า PagingSource ก่อนที่ PageFetcher จะเริ่มโหลดจาก PagingSource ได้ (I9606b, b/174625633)
 
เวอร์ชัน 3.0.0-alpha12
13 มกราคม 2021
androidx.paging:paging-*:3.0.0-alpha12 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha12 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- InvalidatingPagingSourceFactory ไม่ใช่คลาส Abstract อีกต่อไป เนื่องจากไม่มีเมธอด Abstract (I4a8c4)
 - เพิ่มการโอเวอร์โหลดของ .cachedIn() ที่ยอมรับ ViewModel แทน Lifecycle หรือ CoroutineScope สำหรับผู้ใช้ Java (I97d81, b/175332619)
 - อนุญาตให้ผู้เรียกใช้ Java ใช้การดำเนินการเปลี่ยนรูปแบบ PagingData ในลักษณะที่ไม่พร้อมกันโดยการยอมรับ Executor ในอาร์กิวเมนต์ของตัวดำเนินการเปลี่ยนรูปแบบ ตอนนี้ระบบได้นำคำต่อท้าย -Sync ออกจากตัวดำเนินการแปลง -Sync ทั้งหมดแล้ว และผู้ใช้ Kotlin Coroutine จะต้องแยกความแตกต่างโดยการเรียกฟังก์ชันส่วนขยายที่ยอมรับบล็อกที่ระงับแทน
เราได้ย้ายโอเปอเรเตอร์การเปลี่ยนรูปแบบ PagingData ทั้งหมดไปไว้ในส่วนขยาย
ภายใต้คลาส PagingDataTransforms แบบคงที่ ผู้ใช้ Java จะต้อง
เรียกใช้ผ่านตัวช่วยแบบคงที่ เช่น
PagingDataTransforms.map(pagingData, transform)สำหรับผู้ใช้ Kotlin ไวยากรณ์จะเหมือนกัน แต่คุณจะต้องนำเข้าฟังก์ชัน (If6885, b/172895919) 
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ระบบไม่เรียกใช้ 
RemoteMediator.load()ระหว่างadapter.refresh()หากถึงจุดสิ้นสุดของการแบ่งหน้าแล้ว 
เวอร์ชัน 3.0.0-alpha11
16 ธันวาคม 2020
androidx.paging:paging-*:3.0.0-alpha11 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha11 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับสถานะที่บันทึกไว้สำหรับกรณีการใช้งานพื้นฐานต่อไปนี้ (การรองรับแบบเต็ม โดยเฉพาะในกรณีแหล่งที่มาแบบเลเยอร์ยังอยู่ระหว่างดำเนินการ)
- แคชโฟลว์และไม่ได้ปิดแอปพลิเคชัน (เช่น แคชโฟลว์ใน ViewModel และกิจกรรมจะสร้างขึ้นใหม่ในกระบวนการ)
 - ระบบจะนับแหล่งที่มาของการแบ่งหน้า เปิดใช้ตัวยึดตำแหน่ง และเลย์เอาต์ ไม่สลับ
 
 
การเปลี่ยนแปลง API
PagingSource.getRefreshKey()ตอนนี้เป็น API ที่เสถียรแล้ว (I22f6f, b/173530980)PagingSource.invalidateไม่ใช่ฟังก์ชันที่เปิดให้ใช้งานอีกต่อไป หากต้องการรับการแจ้งเตือนเมื่อมีการลบล้าง ให้พิจารณาเรียกใช้เมธอด registerInvalidatedCallback แทนการลบล้าง invalidate (I628d9, b/173029013, b/137971356)- ตอนนี้ Pager มีตัวสร้างทดลองตัวเดียวควบคู่ไปกับตัวสร้างปกติ แทนที่จะรั่วไหล API ทดลองไปยัง API สาธารณะที่ไม่ใช่แบบทดลองผ่านคำอธิบายประกอบการเลือกใช้ (I9dc61, b/174531520)
 - อัปเดตพร็อพเพอร์ตี้ความสะดวก
CombinedLoadStates.refresh,CombinedLoadStates.prependCombinedLoadStates.appendให้เปลี่ยนจากLoadingเป็นNotLoadingเท่านั้น หลังจากที่ทั้งสถานะการโหลดของสื่อกลางและแหล่งที่มาเป็นNotLoadingเพื่อให้แน่ใจว่า การอัปเดตจากระยะไกลมีผลแล้ว (I65619) นำ LoadParams.pageSize ออกแล้ว (เลิกใช้งานไปแล้ว ) เราขอแนะนำให้ใช้
LoadParams.loadSizeใน PagingSourceLoadParams.loadSizeจะเท่ากับPagingConfig.pageSizeเสมอ ยกเว้นการเรียกโหลดครั้งแรกซึ่งจะเท่ากับPagingConfig.initialLoadSizeหากคุณทดสอบ DataSource ของ Paging2 โดยไม่ใช้ Pager หรือ PagedList
pageSizeอาจไม่ตรงกับPagingConfig.pageSizeหากคุณตั้งค่าinitialLoadSizeด้วย หากการทดสอบมีความสำคัญ ให้ลองใช้ Pager/PagedList แทน ซึ่งจะตั้งค่า PageSize ที่ถูกต้องสำหรับเมธอดการโหลด DataSource ภายใน (I98ac7, b/149157296)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องเนื่องจาก IllegalStateException เมื่อ ใช้ตัวคั่นที่มีการตั้งค่า PagingConfig.maxSize (I0ed33, b/174787528)
 - แก้ไขข้อบกพร่องที่สถานะการโหลดสำหรับ PREPEND / APPEND จะไม่อัปเดตเป็น 
NotLoading(endOfPaginationReached = true)ทันที หลังจากโหลดครั้งแรกหากตั้งค่า RemoteMediator ไว้ (I8cf5a) - แก้ไขข้อบกพร่องที่ API ฝั่งผู้นำเสนอ เช่น .snapshot(), .peek() ฯลฯ จะแสดงรายการก่อนหน้า (ล้าสมัย) ภายในการอัปเดต ListUpdateCallback
 - แก้ไขข้อบกพร่องที่โอเปอเรเตอร์ตัวคั่นจะไม่เพิ่มส่วนหัวหรือส่วนท้ายเมื่อใช้กับ RemoteMediator
 - แก้ไขข้อบกพร่องที่ทำให้การอัปเดต LoadState เป็น NotLoading สำหรับ RemoteMediator ค้างอยู่ในสถานะ Loading
 - แก้ไขข้อบกพร่องที่ API ความเข้ากันได้ของ Paging2.0, 
.asPagingSourceFactory(), อาจทำให้มีการเริ่มต้นDataSourceที่อยู่เบื้องหลังใน CoroutineDispatcher ที่ไม่ถูกต้อง ซึ่งจะช่วยแก้ไขกรณีที่แอปขัดข้องและอาจเกิด ANR โดยเฉพาะเมื่อใช้การติดตั้งใช้งาน PagingSource ปัจจุบันของ Room ซึ่งใช้เส้นทางการทำงานร่วมกันนี้ 
เวอร์ชัน 3.0.0-alpha10
2 ธันวาคม 2020
androidx.paging:paging-*:3.0.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
ระบบได้นำ API ของ
dataRefreshFlowและdataRefreshListenerที่เลิกใช้งานแล้วออก เนื่องจากซ้ำซ้อนกับการอัปเดต loadStateFlow / Listener สำหรับ ผู้ที่ย้ายข้อมูล ฟังก์ชันที่เทียบเท่ากับ loadStateFlow คือloadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
การแก้ไขข้อบกพร่อง
- endOfPaginationReached สำหรับ RemoteMediator 
REFRESHnow correctly propagate to LoadState updates and prevents remoteAPPENDandPREPENDfrom triggering. (I94a3f, b/155290248) - การแสดงรายการที่ว่างเปล่าเนื่องจากหน้าเริ่มต้นว่างเปล่าหรือ
การกรองที่เข้มงวดจะไม่ทำให้การแบ่งหน้าไม่เริ่มทำงาน
PREPENDหรือโหลดAPPENDอีกต่อไป (I3e702, b/168169730) - แก้ไขปัญหาที่ 
getRefreshKeyไม่ได้รับการเรียกใช้ใน PagingSource รุ่นต่อๆ ไปเมื่อมีการล้างข้อมูลอย่างรวดเร็ว (I45460, b/170027530) 
การมีส่วนร่วมภายนอก
- เพิ่มคลาส Abstract ใหม่ชื่อ InvalidatingPagingSourceFactory
พร้อม 
.invalidate()API ที่ส่งต่อการเรียกใช้ invalidate ไปยัง PagingSource ทั้งหมด ที่คลาสนี้ปล่อยออกมา ขอขอบคุณ @claraf3 (Ie71fc, b/160716447) 
ปัญหาที่ทราบ
- ส่วนหัวและส่วนท้ายจากการแปลง .insertSeparators() อาจไม่ปรากฏในทันทีเมื่อใช้ RemoteMediator b/172254056
 - การใช้ RemoteMediator อาจทำให้ 
LoadStateค้างได้หากการลบล้างและPagingSource.load(LoadParams.Refresh(...))เสร็จสมบูรณ์ก่อนที่RemoteMediator.load()จะแสดงผล b/173717820 
เวอร์ชัน 3.0.0-alpha09
11 พฤศจิกายน 2020
androidx.paging:paging-*:3.0.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha09 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เลิกใช้งานเมธอด dataRefreshFlow / Listener อย่างสมบูรณ์ด้วย replaceWith clause (I6e2dd)
 
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่เกิด 
IllegalArgumentExceptionเมื่อใช้ตัวคั่นกับ RemoteMediator และมีการทริกเกอร์การล้างข้อมูลขณะที่การโหลดจากระยะไกลซึ่งจะแสดงผล endOfPagination ยังคงทำงานอยู่ (I3a260) 
เวอร์ชัน 3.0.0-alpha08
28 ตุลาคม 2020
androidx.paging:paging-*:3.0.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตัวแปร Kotlin / Java ของ 
DataSource.InvalidatedCallbackได้รับการรวมเข้าด้วยกันโดยการเปิดใช้การแปลง SAM ใน Kotlin ผ่านอินเทอร์เฟซฟังก์ชัน (พร้อมใช้งานใน Kotlin 1.4) นอกจากนี้ยังแก้ไขข้อบกพร่องที่ไม่ได้เรียกใช้ รูปแบบ Kotlin ของการเรียกกลับ invalidate หลังจากที่.mapหรือ.mapByPageแปลงแล้วด้วย (I1f244, b/165313046) 
การแก้ไขข้อบกพร่อง
- เราได้ปรับปรุงการโต้ตอบของ Paging กับ ViewPager อย่างมาก โดยเฉพาะอย่างยิ่ง การแบ่งหน้าจะไม่ยกเลิกการเรียกใช้ 
RemoteMediator#loadอีกต่อไปเนื่องจากมีการล้างหน้า นอกจากนี้ จะไม่มีการส่งคำขอโหลดเพื่อต่อท้าย/นำหน้า หากต้องมีการรีเฟรช จนกว่าคำขอรีเฟรชจะเสร็จสมบูรณ์ (I6390b, b/162252536) - เปิดใช้การตรวจสอบ Lint ของ API สำหรับ MissingGetterMatchingBuilder สำหรับ androidx (I4bbea, b/138602561)
 - แก้ไขข้อบกพร่องที่ทำให้ตัวช่วย 
.withLoadState*ConcatAdapterขัดข้องเนื่องจากการแจ้งเตือน RecyclerView จากเธรดเบื้องหลัง (I18bb5, b/170988309) - แก้ไขข้อบกพร่องที่บางครั้งการโหลดหน้าเว็บขนาดเล็กมากซึ่งไม่ใช่หน้าว่างจะทำให้การดึงข้อมูลล่วงหน้าไม่ทริกเกอร์การโหลดอย่างถูกต้องIffda3 b/169259468
 
เวอร์ชัน 3.0.0-alpha07
1 ตุลาคม 2020
androidx.paging:paging-*:3.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวดำเนินการ Async PagingData ที่ใช้ Guava ยอมรับ Executor เป็นพารามิเตอร์เพื่อควบคุมบริบทการดำเนินการแล้ว (Id4372)
 
การแก้ไขข้อบกพร่อง
- แก้ไขข้อยกเว้น IndexOutOfBounds ที่เกิดขึ้นใน RemoteMediator เนื่องจาก เงื่อนไขการแข่งขัน (I00b7f, b/165821814)
 - แก้ไข Race Condition ในการแปลง DataSource -> PagingSource ซึ่งอาจทำให้ PagingSource ที่ได้ไม่สนใจสัญญาณการลบล้างจาก DataSource
 - แก้ไขปัญหาในตรรกะการดึงข้อมูลหน้าซึ่งบางครั้งอาจทำให้ไม่สามารถเลือก PagingSource รุ่นใหม่ได้จนกว่าจะมีการเรียกใช้ PagingDataAdapter.refresh()
 - แก้ไขปัญหาที่ทำให้บางครั้งตำแหน่งการเลื่อนหายไปเมื่อใช้ DataSource ที่แปลงเป็น PagingSource (เช่น รายการที่สร้างโดย Room) ร่วมกับ RemoteMediator
 
การมีส่วนร่วมภายนอก
- ขอขอบคุณ @simonschiller ที่เพิ่มตัวดำเนินการการแปลงแบบไม่พร้อมกันที่อิงตาม RxJava2, RxJava3 และ Guava สำหรับ PagingData
 
เวอร์ชัน 3.0.0-alpha06
2 กันยายน 2020
androidx.paging:paging-*:3.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
UnsupportedOperationExceptionพร้อมข้อความที่ชัดเจนยิ่งขึ้นเกี่ยวกับการ ไม่รองรับรหัสที่เสถียรจะแสดงขึ้นทุกครั้งที่มีการเรียกใช้PagingDataAdapter.setHasStableIds(Ib3890, b/158801427)
การแก้ไขข้อบกพร่อง
- insertSeparators จะไม่กรองหน้าว่างออกอีกต่อไป ซึ่งจะช่วยให้ ผู้แสดงเคารพระยะทางในการดึงข้อมูลล่วงหน้าได้แม้ในกรณีที่มีการแทรกหน้าว่างจำนวนมาก (I9cff6, b/162538908)
 
เวอร์ชัน 3.0.0-alpha05
19 สิงหาคม 2020
androidx.paging:paging-*:3.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha05 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- ตอนนี้การแบ่งหน้าจะโหลดหน้าเว็บล่วงหน้าอย่างถูกต้องแม้ว่าจะกรองข้อมูลที่แสดงอย่างละเอียดก็ตาม
 - การส่ง 
LoadResult.Errorกลับไปโหลดซ้ำจะไม่ทำให้การเข้าถึงรายการทริกเกอร์การลองใหม่ซ้ำอย่างไม่ถูกต้องอีกต่อไป 
การมีส่วนร่วมภายนอก
- ขอขอบคุณ Clara F ที่ช่วยเราล้างข้อมูลการทดสอบบางอย่าง (549612)
 
เวอร์ชัน 3.0.0-alpha04
5 สิงหาคม 2020
androidx.paging:paging-*:3.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม 
peek()API ลงในAsyncPagingDataDifferและPagingDataAdapterเพื่ออนุญาตให้เข้าถึงข้อมูลที่แสดงโดยไม่ต้องโหลดหน้าทริกเกอร์ (I38898, b/159104197) - เพิ่ม 
snapshot()API ลงในPagingDataAdapterและAsyncPagingDataDifferเพื่อให้ดึงข้อมูลรายการที่แสดงได้โดยไม่ต้อง ทริกเกอร์การดึงข้อมูลหน้าเว็บ (I566b6, b/159104197) - เพิ่ม
PagingData.from(List<T>)ตัวสร้างเพื่ออนุญาต การแสดงรายการแบบคงที่ ซึ่งสามารถใช้ร่วมกับโฟลว์ PagingData โดยรวม เพื่อแสดงรายการแบบคงที่ในบางสถานะ เช่น ก่อน การรีเฟรชครั้งแรกจะเสร็จสิ้น หรือใช้เพื่อทดสอบการเปลี่ยนรูปแบบ (Id134d) - เลิกใช้งาน DataRefresh Flow / Listener API เนื่องจากมีจุดประสงค์เพื่อแสดงสถานะของรายการที่แสดงเมื่อรีเฟรช แต่ด้วยการปรับปรุงเวลาเรียกกลับของ LoadState Flow / Listener และพร็อพเพอร์ตี้ itemCount จึงซ้ำซ้อน (Ia19f3)
 - เพิ่ม Wrapper ความเข้ากันได้ของ RxJava3 สำหรับ 
PagingSourceและRemoteMediator(I49ef3, b/161480176) 
การแก้ไขข้อบกพร่อง
PositionalDataSourceที่แปลงเป็นPagingSourceผ่านtoPagingSourceFactoryHelper รวมถึงPagingSourceที่สร้างโดย Room จะทำเครื่องหมายตัวเองอย่างถูกต้องเพื่อรองรับการข้าม (I3e84c, b/162161201)- แก้ไขข้อบกพร่องที่การใช้ตัวแปรแบบซิงโครนัสของ submitData
บางครั้งอาจทำให้เกิดการแข่งขันซึ่งทำให้เกิด 
ClosedSendChannelException(I4d702, b/160192222) 
การมีส่วนร่วมภายนอก
- ขอขอบคุณ Zac Sweers ที่เพิ่ม Wrapper ความเข้ากันได้ของ RxJava3 ในนามของ Slack (I49ef3, b/161480176)
 
เวอร์ชัน 3.0.0-alpha03
22 กรกฎาคม 2020
androidx.paging:paging-*:3.0.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ตัวสร้างสำหรับ PagingState เป็นแบบสาธารณะแล้ว ซึ่งจะช่วยให้การทดสอบการใช้งาน getRefreshKey() ง่ายขึ้น (I8bf15)
 - ซ่อนฟังก์ชันแผนที่ Kotlin ของแหล่งข้อมูล Hid จาก Java เพื่อ แก้ไขความคลุมเครือระหว่างตัวแปรเดิมกับตัวแปร Kotlin (If7b23, b/161150011)
 - API ที่ซ้ำกันซึ่งมีไว้เพื่ออำนวยความสะดวกแก่ผู้ใช้ Kotlin ได้รับการทำเครื่องหมาย @JvmSynthetic (I56ae5)
 - เพิ่มการโอเวอร์โหลดสำหรับตัวสร้างของ LoadResult.Page ซึ่งตั้งค่าเริ่มต้นของ itemsBefore และ itemsAfter เป็น COUNT_UNDEFINED (I47849)
 - ทำให้ตัวดำเนินการ PagingData ที่มีอยู่ยอมรับเมธอดระงับ และเปิดตัวตัวดำเนินการ mapSync, flatMapSync และ filterSync ใหม่ที่ไม่ระงับ สำหรับผู้ใช้ Java เราได้ย้ายวิธีการเปลี่ยนรูปแบบที่มีอยู่ไปไว้ในฟังก์ชันส่วนขยายแล้ว ดังนั้นตอนนี้ผู้ใช้ Kotlin จะต้องนำเข้าวิธีการเหล่านั้น (I34239, b/159983232)
 
การแก้ไขข้อบกพร่อง
- ตอนนี้ PagingSource ของ Room (และ PositionalDataSource) จะ แสดงตัวคั่นนำเป็นส่วนหนึ่งของหน้าแรก เพื่อให้ผู้ใช้ ไม่ต้องเลื่อนเพื่อดู (I6f747, b/160257628)
 - ตอนนี้การเข้าถึงรายการในตัวยึดตำแหน่งจะทริกเกอร์การโหลด PagingSource อย่างถูกต้องจนกว่าจะมีการส่งคืนหน้าเว็บที่ตรงกับดัชนีที่ขอหลังจากที่ PagingData.filter() เปลี่ยนรูปแบบแล้ว (I95625, b/158763195)
 - แก้ไขข้อบกพร่องที่บางครั้งการเลื่อนหลังจากที่ PagingSource แสดงข้อผิดพลาดอาจทำให้ PagingDataAdapter.retry() ไม่สามารถลองอีกครั้งได้ (I1084f, b/160194384)
 - แก้ไขปัญหาที่การเข้าถึงรายการหลังจากวางหน้าอาจ ไม่โหลดหน้าแม้ว่าการเข้าถึงรายการจะอยู่ภายใน prefetchDistance (Ie95ae, b/160038730)
 - การตั้งค่า PagingConfig.maxSize จะไม่เปิดใช้ตัวยึดตำแหน่งอีกต่อไป หลังจากเหตุการณ์การวาง (I2be29, b/159667766)
 
เวอร์ชัน 3.0.0-alpha02
24 มิถุนายน 2020
androidx.paging:paging-*:3.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดสำหรับตัวสร้างของ 
PagingConfigด้วยค่าเริ่มต้นทั่วไป (I39c50, b/158576040) - เพิ่มการโอเวอร์โหลดสำหรับตัวสร้างของ 
PagingDataAdapterและAsyncPagingDataDifferด้วยค่าเริ่มต้นทั่วไป (Ie91f5) - ตอนนี้ API ของอะแดปเตอร์ 
dataRefreshFlowและdataRefreshListenerจะส่งค่าบูลีนเพื่อส่งสัญญาณว่าPagingDataว่างเปล่าหรือไม่ (I6e37e, b/159054196) - เพิ่ม API ของ RxJava และ Guava สำหรับ RemoteMediator - RxRemoteMediator และ ListenableFutureRemoteMediator
 - เพิ่มตัวช่วยไปยัง PagingState สำหรับการเข้าถึงรายการทั่วไป เช่น 
isEmpty()และfirstItemOrNull()(I3b5b6, b/158892717) 
การแก้ไขข้อบกพร่อง
- ตอนนี้ Pager จะตรวจสอบการนำ PagingSource กลับมาใช้ซ้ำใน Factory เพื่อป้องกันการนำ PagingSource ที่ไม่ถูกต้องกลับมาใช้ซ้ำโดยไม่ตั้งใจ ซึ่งทำให้เกิดข้อผิดพลาดที่ไม่ชัดเจน (I99809, b/158486430)
 - ความล้มเหลวจากการรีเฟรช RemoteMediator จะไม่ทำให้ PagingSource โหลดไม่ได้อีกต่อไป (I38b1b, b/158892717)
 - เวอร์ชันที่ไม่ระงับของ 
submitDataจะไม่ทำให้เกิดข้อขัดข้องเนื่องจากการรวบรวมพร้อมกันในPagingDataหลายรายการเมื่อเรียกใช้หลังจากเวอร์ชันที่ระงับของsubmitData(I26358, b/158048877) - แก้ไขข้อยกเว้น "รวบรวมจากเพจเจอร์ 2 ครั้งไม่ได้" ที่อาจเกิดขึ้นหลังจากการเปลี่ยนแปลงการกำหนดค่า (I58bcc, b/158784811)
 
เวอร์ชัน 3.0.0-alpha01
10 มิถุนายน 2020
androidx.paging:paging-*:3.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 3.0.0-alpha01 มีคอมมิตเหล่านี้
Paging Library ได้รับการอัปเดตเป็น 3.0 เพื่อเปิดใช้ฟีเจอร์ใหม่ๆ ที่สำคัญหลายอย่าง
ฟีเจอร์ใหม่ของเวอร์ชัน 3.0
- รองรับ Kotlin Coroutines และ Flow อย่างเต็มที่
 - รองรับการโหลดแบบอะซิงโครนัสด้วยฟังก์ชันระงับโครูทีน, RxJava Single หรือ Guava ListenableFuture primitives
 - สถานะการโหลดและสัญญาณข้อผิดพลาดในตัวสำหรับการออกแบบ UI ที่ตอบสนอง รวมถึงฟังก์ชันการลองอีกครั้งและการรีเฟรช
 - การปรับปรุงเลเยอร์ที่เก็บ
- อินเทอร์เฟซแหล่งข้อมูลที่เรียบง่าย
 - การแบ่งหน้าเครือข่าย + ฐานข้อมูลที่ง่ายขึ้น
 - การสนับสนุนการยกเลิก
 
 - การปรับปรุงเลเยอร์การนำเสนอ
 
ปัญหาที่ทราบ
- Javadoc ของ Paging 3 ยังไม่พร้อมใช้งาน ในระหว่างนี้ โปรดใช้คำแนะนำที่ลิงก์ไว้ด้านบนหรือเอกสารประกอบของ Kotlin (b/158614050)
 
เวอร์ชัน 2.1.2
เวอร์ชัน 2.1.2
18 มีนาคม 2020
androidx.paging:paging:2.1.2 ได้รับการเผยแพร่แล้ว  เวอร์ชัน 2.1.2 มีคอมมิตเหล่านี้เทียบกับ 2.1.0
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาสำหรับ 
IndexOutOfBoundsExceptionในกรณีที่แทบจะไม่เคยเกิดขึ้นเมื่อแปลงตำแหน่งระหว่างการลบล้าง 
เผยแพร่ปัญหา
เราเผยแพร่เวอร์ชันการแบ่งหน้า
2.1.1อย่างไม่ถูกต้องจากสาขาที่กำหนดค่าไม่ถูกต้อง ซึ่งทำให้ API และฟังก์ชันที่ยังไม่ได้ใช้งานบางส่วนเปิดเผยต่อสาธารณะ ซึ่งฟีเจอร์เหล่านี้จะพร้อมใช้งานในรุ่นต่อๆ ไปการแบ่งหน้า
2.1.2มีการแก้ไขการโหลดที่กึ่งกลางซึ่งเปิดตัวครั้งแรกใน 2.1.1 แต่ครั้งนี้มีการเลือกอย่างถูกต้องบนการเปิดตัว 2.1.0 ขอแนะนำเป็นอย่างยิ่งให้อัปเกรดเป็นรุ่นนี้ หากคุณใช้เวอร์ชัน 2.1.1 อยู่
เวอร์ชัน 2.1.1
เวอร์ชัน 2.1.1
18 ธันวาคม 2019
androidx.paging:paging-*:2.1.1 ได้รับการเผยแพร่แล้ว  เวอร์ชัน 2.1.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ตอนนี้การโหลดเริ่มต้นที่ต่อเนื่องจาก PositionalDataSources จะอยู่ตรงกลางรอบๆ การเข้าถึงครั้งล่าสุดเมื่อปิดใช้ตัวยึดตำแหน่ง
 
เวอร์ชัน 2.1.0
เวอร์ชัน 2.1.0
25 มกราคม 2019
การเรียกหน้า 2.1.0 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-rc01
เวอร์ชัน 2.1.0-rc01
6 ธันวาคม 2018
การเรียกหน้า 2.1.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-beta01
เวอร์ชัน 2.1.0-beta01
1 พฤศจิกายน 2018
การเรียกหน้า 2.1.0-beta01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-alpha01
เวอร์ชัน 2.1.0-alpha01
12 ตุลาคม 2018
Paging 2.1.0-alpha01 มีการเพิ่มฟีเจอร์หลัก 2 อย่าง ได้แก่ การทิ้งหน้า และไลบรารีส่วนขยาย KTX สำหรับทุกอาร์ติแฟกต์ รวมถึงการเปลี่ยนแปลง API อื่นๆ และการแก้ไขข้อบกพร่องอีกหลายอย่าง
การเปลี่ยนแปลง API
- เพิ่ม 
PagedList.Config.Builder.setMaxSize()เพื่อจำกัดจำนวนรายการที่โหลดในหน่วยความจำ - เพิ่ม 
androidx.paging.Config()เป็นทางเลือก Kotlin สำหรับPagedList.Config.Builder - เพิ่ม 
androidx.paging.PagedList()เป็นทางเลือก Kotlin สำหรับPagedList.Builder - เพิ่ม 
DataSourceFactory.toLiveData()เป็นทางเลือก Kotlin สำหรับLivePagedListBuilder - เพิ่ม 
DataSourceFactory.toObservable()และtoFlowable()เป็นทางเลือก Kotlin สำหรับRxPagedListBuilder - เพิ่ม 
AsyncPagedListDiffer.addPagedListListener()สำหรับการฟังเมื่อมีการสลับ PagedList b/111698609 - เพิ่ม
PagedListAdapter.onCurrentListChanged()ตัวแปรที่ส่งผ่านรายการเก่าและใหม่ เลิกใช้งานตัวแปรก่อนหน้า - เพิ่มตัวแปร 
PagedListAdapter/AsyncPagedListDiffer.submitList()ซึ่งใช้ Callback เพิ่มเติมที่จะทริกเกอร์เมื่อมีการแสดง pagedlist หลังจากทำการเปรียบเทียบ ซึ่งช่วยให้คุณซิงโครไนซ์การสลับ PagedList กับการอัปเดต UI อื่นๆ ได้ b/73781068 PagedList.getLoadedCount()เพื่อให้คุณทราบว่ามีรายการอยู่ในหน่วยความจำกี่รายการ โปรดทราบว่าค่าที่ส่งคืนจะเท่ากับ.size()เสมอหากปิดใช้ตัวยึดตำแหน่ง
การแก้ไขข้อบกพร่อง
- แก้ไขเงื่อนไขการแข่งขันเมื่อทำการเปรียบเทียบหากมีการนำรายการกลับมาใช้ซ้ำ b/111591017
 PagedList.loadAround()จะแสดงข้อผิดพลาดIndexOutOfBoundsExceptionเมื่อดัชนีไม่ถูกต้อง ก่อนหน้านี้แอปอาจขัดข้องโดยมีข้อยกเว้นอื่นๆ ที่ไม่ชัดเจน- แก้ไขกรณีที่ขนาดการโหลดเริ่มต้นที่เล็กมากร่วมกับข้อมูลที่ไม่เปลี่ยนแปลงจะส่งผลให้ไม่มีการโหลดเพิ่มเติม b/113122599
 
เวอร์ชัน 2.0.0
เวอร์ชัน 2.0.0
1 ตุลาคม 2018
Paging 2.0.0 เปิดตัวพร้อมการแก้ไขข้อบกพร่องเพียงรายการเดียว
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่อาจเกิดขึ้นเมื่อเลื่อนอย่างรวดเร็วโดยใช้ 
PositionalDataSourceและตัวยึดตำแหน่ง b/114635383 
เวอร์ชัน 2.0.0-beta01
2 กรกฎาคม 2018
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเนื้อหาหายไปในบางกรณีที่ใช้การเพิ่มด้านหน้า (ปิดใช้ตัวยึดตำแหน่ง, PositionalDataSource) b/80149146
 - (เปิดตัวแล้วใน 
1.0.1) แก้ไขปัญหาการขัดข้องที่PagedListAdapterและAsyncPagedListDifferไม่สามารถส่งสัญญาณเหตุการณ์การย้าย b/110711937 
การอ้างอิงก่อน AndroidX
สำหรับ Paging เวอร์ชันก่อน AndroidX ที่ตามมา ให้รวมการขึ้นต่อกันต่อไปนี้
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"
}
เวอร์ชัน 1.0.1
เวอร์ชัน 1.0.1
26 มิถุนายน 2018
Paging 1.0.1 เปิดตัวพร้อมการแก้ไขข้อบกพร่องเพียงรายการเดียวใน runtime เราขอแนะนำให้ใช้ 1.0.1 เพื่อความเสถียร นอกจากนี้ เรายังได้เปิดตัว Paging RxJava2 1.0.1 ซึ่งเหมือนกับ 1.0.0-rc1 ทุกประการ
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาการขัดข้องที่ 
PagedListAdapterและAsyncPagedListDifferไม่ส่งสัญญาณเหตุการณ์การย้าย b/110711937 
RxJava2 เวอร์ชัน 1.0.0
RxJava2 เวอร์ชัน 1.0.0-rc1
16 พฤษภาคม 2018
Paging RxJava2 1.0.0-rc1 จะเปลี่ยนไปเป็นรุ่นที่อาจได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลงจากอัลฟ่ารุ่นแรก
เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0-rc1
19 เมษายน 2018 รุ่นที่อาจได้รับการเผยแพร่ของการแบ่งหน้า
เราไม่มีปัญหาที่ทราบเพิ่มเติมหรือฟีเจอร์ใหม่ที่กำหนดเวลาไว้สำหรับการเปิดตัว
การแบ่งหน้า1.0.0 โปรดอัปเกรดโปรเจ็กต์เพื่อใช้ 1.0.0-rc1 และช่วยเราทดสอบการใช้งานจริงเพื่อให้เราสามารถเปิดตัว 1.0.0 ที่เสถียรได้
รุ่นนี้ไม่มีการเปลี่ยนแปลงใดๆ โดยจะเหมือนกับ 1.0.0-beta1
เวอร์ชัน 1.0.0-เบต้า1
5 เมษายน 2018
การแบ่งหน้าจะเป็นเวอร์ชันเบต้าในช่วงเวลาสั้นๆ ก่อนที่จะพัฒนาเป็นเวอร์ชันที่พร้อมเผยแพร่
เราไม่มีแผนที่จะเปลี่ยนแปลง API เพิ่มเติมสำหรับ Paging 1.0 และการเปลี่ยนแปลง API ใดๆ จะต้องมีเกณฑ์ที่สูงมาก
เราได้เปิดตัวการรองรับ RxJava2 เวอร์ชันอัลฟ่าสำหรับ Paging เป็นโมดูลแยกต่างหากที่ไม่บังคับ (android.arch.paging:rxjava2:1.0.0-alpha1)
และจะกำหนดเวอร์ชันแยกต่างหากชั่วคราวจนกว่าจะเสถียร
ไลบรารีใหม่นี้มีทางเลือก RxJava2 สำหรับ LivePagedListBuilder ซึ่งสร้าง Observable และ Flowable ได้โดยใช้ Scheduler แทน 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();
ฟีเจอร์ใหม่
RxPagedListBuilderจะเพิ่มผ่านอาร์ติแฟกต์android.arch.paging:rxjava2ใหม่
การเปลี่ยนแปลง API
การเปลี่ยนแปลง API เพื่อชี้แจงบทบาทของตัวดำเนินการในเครื่องมือสร้าง
เปลี่ยนชื่อ
setBackgroundThreadExecutor()เป็นsetFetchExecutor()(ในPagedList.BuilderและLivePagedListBuilder)เปลี่ยนชื่อ
setMainThreadExecutor()เป็นsetNotifyExecutor()(ในPagedList.Builder)
แก้ไขให้
PagedList.mCallbacksสมาชิกเป็นแบบส่วนตัว
การแก้ไขข้อบกพร่อง
LivePagedListBuilderจะทริกเกอร์การโหลดเริ่มต้นPagedListในตัวดำเนินการที่ระบุ แทนที่จะเป็นกลุ่มเธรด I/O ของ Arch Componentsแก้ไขลักษณะการทำงานของการลบล้างใน
DataSourceWrapper ภายใน (ใช้เพื่อใช้DataSource.mapรวมถึงการโหลดPositionalDataSourceที่ปิดใช้ตัวยึดตำแหน่ง) b/77237534
เวอร์ชัน 1.0.0-alpha7
21 มีนาคม 2018
การแบ่งหน้า 1.0.0-alpha7 จะเปิดตัวพร้อมกับวงจรของลูกค้า 1.1.1 เนื่องจาก Paging alpha7 ขึ้นอยู่กับการย้ายคลาส Function ที่กล่าวถึงข้างต้น คุณจะต้องอัปเดตการอ้างอิง lifecycle:runtime เป็น android.arch.lifecycle:runtime:1.1.1
เราวางแผนที่จะให้ alpha7 เป็นรุ่นสุดท้ายก่อนที่ฟีเจอร์การเรียกหน้าจะเข้าสู่เวอร์ชันเบต้า
การเปลี่ยนแปลง API
- ตอนนี้ออบเจ็กต์ 
DataSource.LoadParamsมีตัวสร้างสาธารณะแล้ว และออบเจ็กต์DataSource.LoadCallbackเป็นนามธรรมแล้ว ซึ่งช่วยให้คุณสามารถห่อหุ้มDataSourceหรือทดสอบDataSourceโดยตรงด้วยการเรียกกลับจำลอง b/72600421 - Mapper สำหรับ DataSource และ DataSource.Factory
map(Function<IN,OUT>)ช่วยให้คุณเปลี่ยนรูป ห่อ หรือตกแต่งผลลัพธ์ที่โหลดโดยDataSourcemapByPage(<List<IN>,List<OUT>>)ช่วยให้ทำเช่นเดียวกันกับการประมวลผลแบบกลุ่มได้ (เช่น หากรายการที่โหลดจาก SQL ต้องค้นหาฐานข้อมูลแยกต่างหากเพิ่มเติม ก็สามารถทำได้เป็นกลุ่ม)
 - เพิ่ม 
PagedList#getDataSource()เป็นวิธีการที่สะดวก b/72611341 - เราได้นำคลาสที่เลิกใช้งานแล้วทั้งหมดออกจาก API ซึ่งรวมถึงส่วนที่เหลือของแพ็กเกจ 
recyclerview.extensionsและLivePagedListProvider DataSource.Factoryเปลี่ยนจากอินเทอร์เฟซเป็นคลาสแบบนามธรรมเพื่อเปิดใช้ฟังก์ชันแผนที่
การแก้ไขข้อบกพร่อง
- เปลี่ยน Builders ให้เป็น final b/70848565
 - ตอนนี้เราได้แก้ไขการติดตั้งใช้งาน Room 
DataSourceเพื่อรองรับการค้นหาหลายตารางแล้ว โดยการแก้ไขนี้อยู่ใน Room 1.1.0-beta1 ดูด้านบน - แก้ไขข้อบกพร่องที่ 
BoundaryCallback.onItemAtEndLoadedจะไม่เรียกใช้สำหรับPositionalDataSourceหากเปิดใช้ตัวยึดตำแหน่งและ ขนาดทั้งหมดเป็นผลคูณที่แน่นอนของขนาดหน้าเว็บ 
เวอร์ชัน 1.0.0-alpha5
22 มกราคม 2018
การแก้ไขข้อบกพร่อง
- แก้ไขการโหลดหน้าเว็บเมื่อปิดใช้ตัวยึดตำแหน่ง b/70573345
 - การบันทึกเพิ่มเติมเพื่อติดตามข้อบกพร่อง IllegalArgumentException b/70360195 (และการแก้ไขฝั่ง Room โดยคาดการณ์)
 - แก้ไขโค้ดตัวอย่าง Javadoc b/70411933, b/71467637