DataStore
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 22 ตุลาคม 2025 | 1.1.7 | - | 1.2.0-beta01 | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน DataStore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
DataStore มีการติดตั้งใช้งาน 2 แบบ ได้แก่ Preferences และ Proto โปรดเลือกอย่างใดอย่างหนึ่ง นอกจากนี้ คุณยังเพิ่มการอ้างอิงที่ไม่มี Android ลงใน การใช้งานอย่างใดอย่างหนึ่งได้ด้วย
เพิ่มทรัพยากร Dependency สำหรับการติดตั้งใช้งานที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Preferences DataStore
Groovy
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation "androidx.datastore:datastore-preferences:1.1.7" // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.7" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.7" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-preferences-core:1.1.7" }
Kotlin
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation("androidx.datastore:datastore-preferences:1.1.7") // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.7") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.7") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-preferences-core:1.1.7") }
Proto DataStore
Groovy
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation "androidx.datastore:datastore:1.1.7" // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.1.7" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.1.7" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-core:1.1.7" }
Kotlin
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation("androidx.datastore:datastore:1.1.7") // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.1.7") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.1.7") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-core:1.1.7") }
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.2
เวอร์ชัน 1.2.0-beta01
22 ตุลาคม 2025
androidx.datastore:datastore-*:1.2.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตั้งค่า
CorruptionHandlerเป็นสาธารณะ (I9ac35, b/452406457) - ใช้
androidx.core.util.FunctionในGuavaDataStore(I71eae, b/448563999) - เพิ่มการโอเวอร์โหลดสำหรับ
GuavaDataStore.fromที่ใช้ Executor แทนCoroutineContext(I989fa, b/448563183)
การแก้ไขข้อบกพร่อง
- แก้ไข
java.lang.UnsatisfiedLinkErrorเมื่อใช้DataStoreในแอปที่เพิ่มประสิทธิภาพด้วย R8 แต่ไม่ได้ใช้getDefaultProguardFile('android-proguard-optimize.txt')(I27d0d, b/434696293) - แก้ไขปัญหาที่การดำเนินการ
GuavaDataStoreอาจทำงานอย่างไม่ถูกต้องในเทรดที่เรียก (เช่น เทรดหลัก) แทนที่จะเป็นตัวจัดสรร IO ที่ระบุ (Ic91ea,b/441801112)
เวอร์ชัน 1.2.0-alpha02
7 พฤษภาคม 2025
androidx.datastore:datastore-*:1.2.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับหลายกระบวนการใน
GuavaDataStore(e0d608a) - เพิ่มเมธอดตัวช่วยเพื่อสร้าง
GuavaDataStoreจากDataStore(9af26f4) - โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
- แทนที่
datastoreที่มีอยู่ด้วยเมธอดตัวแทนเพื่อเริ่มต้น DataStore ที่จะใช้ในระหว่างการบูตโดยตรง (If71b9)
เวอร์ชัน 1.2.0-alpha01
26 มีนาคม 2025
androidx.datastore:datastore-*:1.2.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มโมดูล
datastore-guavaเพื่อเปิดเผย API ที่ใช้งานง่ายสำหรับผู้ใช้ Java และ GuavaListenableFutureผ่านGuavaDataStore(Iadd5e0) - ตอนนี้ระบบรองรับการใช้งาน
DataStoreในโหมดDirectBootแล้ว หากต้องการสร้างที่เก็บข้อมูลที่จะใช้ในโหมดการบูตโดยตรง คุณต้องสร้างที่เก็บข้อมูลดังกล่าวภายในที่เก็บข้อมูลที่อุปกรณ์ป้องกัน ซึ่งทำได้โดยใช้DataStoreAPI ใหม่ต่อไปนี้createInDeviceProtectedStorage()ในDataStoreFactoryและdeviceProtectedDataStore()ในDataStoreDelegate(Ib90e56)
การเปลี่ยนแปลง API
- เพิ่ม
PreferencesFileSerializerที่ใช้androidx.datastore.core.Serializerอินเทอร์เฟซเพื่อใช้กับFileStorage(I4c71f3)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
FileNotFoundExceptionในOkioStorageเมื่อเริ่มต้นโดยเพิ่มการพยายามอ่านข้อมูลครั้งที่ 2 ในกรณีที่มีการแข่งขัน (I43b3fb, b/337870543) - กำหนดตัวสร้างเริ่มต้นสำหรับ
ReplaceFileCorruptionHandlerเพื่อการใช้งานโค้ดทั่วไป (I795b05, b/358138957)
เวอร์ชัน 1.1
เวอร์ชัน 1.1.7
20 พฤษภาคม 2025
androidx.datastore:datastore-*:1.1.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.7 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับกฎ Proguard ที่ขาดหายไปในอาร์ติแฟกต์ Android ของ
datastore-preferences-core(3f3f6e, b/413078297)
เวอร์ชัน 1.1.6
7 พฤษภาคม 2025
androidx.datastore:datastore-*:1.1.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.6 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ข้อมูลเมตาของ Gradle เสียในเวอร์ชัน
1.1.5ปัญหานี้เกิดจากข้อบกพร่องใน DSL ของปลั๊กอิน AGP KMP ใหม่ ซึ่งป้องกันไม่ให้รวมข้อมูลเมตาสำหรับแพลตฟอร์มเป้าหมายทั้งหมดโดยอัตโนมัติ ข้อบกพร่องนี้ทำให้เมธอด Android ของ DataStore บางรายการไม่ปรากฏในการสร้างของไคลเอ็นต์อีกต่อไป การแก้ไขเกี่ยวข้องกับการใช้ DSL ของandroidเวอร์ชันเก่าในbuild.gradleแทนandroidLibrary(7801abf)
เวอร์ชัน 1.1.5
23 เมษายน 2025
androidx.datastore:datastore-*:1.1.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพื่อลดปัญหา
CorruptionExceptionในPreferencesDataStoreเราได้เปลี่ยนพื้นที่เก็บข้อมูลเริ่มต้นจากOkioStorageเป็นFileStorageการเปลี่ยนแปลงนี้มีผลโดยการเปิดตัวPreferencesFileSerializerb/346197747
เวอร์ชัน 1.1.4
26 มีนาคม 2025
androidx.datastore:datastore-*:1.1.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เปลี่ยนที่เก็บข้อมูลเริ่มต้นจาก
OkioStorageเป็นFileStorageเพื่อปรับปรุงความน่าเชื่อถือด้วยการลดCorruptionException(I71181, b/346197747)
เวอร์ชัน 1.1.3
26 กุมภาพันธ์ 2025
androidx.datastore:datastore-*:1.1.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.3 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
FileNotFoundExceptionปัญหาในOkioStorageที่พบเมื่อเริ่มต้นแอป หากการอ่านไฟล์ครั้งแรกไม่สำเร็จ ระบบจะพยายามอ่านอีกครั้งในกรณีที่เกิดสภาวะการแข่งขันเนื่องจากไฟล์ถูกสร้างขึ้นโดยกระบวนการอื่นในระหว่างการอ่านครั้งแรก (I43b3f, b/337870543)
เวอร์ชัน 1.1.2
15 มกราคม 2025
androidx.datastore:datastore-*:1.1.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ปรับปรุงเวลาในการตอบสนองของการอ่านแบบวอร์ม (
DataStore.data.first()) ได้ 8 เท่า (22b8a40) ReplaceFileCorruptionHandlerสร้างจากโค้ดทั่วไปของ KMP ได้ (7632e839)
เวอร์ชัน 1.1.1
1 พฤษภาคม 2024
androidx.datastore:datastore-*:1.1.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการแจ้งเตือนที่ผิดพลาดของ Linux เกี่ยวกับข้อผิดพลาด "จะเกิดการหยุดชะงักของทรัพยากร" ในกรณีที่
DataStoreหลายอินสแตนซ์พยายามเขียนจากกระบวนการต่างๆ โดยการถอยกลับการล็อกไฟล์
เวอร์ชัน 1.1.0
17 เมษายน 2024
androidx.datastore:datastore-*:1.1.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0
โปรดอ่านบันทึกประจำรุ่นจากเวอร์ชันอัลฟ่าและเบต้าของ 1.1.0 เพื่อดูข้อมูลเพิ่มเติม การอัปเดตที่สำคัญบางส่วนใน 1.1.0 มีดังนี้
- ตอนนี้ DataStore รองรับหลายกระบวนการที่เข้าถึงไฟล์เดียวกัน โดยรองรับการสังเกตการณ์ในกระบวนการต่างๆ
- อินเทอร์เฟซพื้นที่เก็บข้อมูลใหม่ช่วยให้คุณปรับแต่งวิธีจัดเก็บหรือแปลงรูปแบบโมเดลข้อมูลได้
- ตอนนี้คุณใช้ DataStore ในโปรเจ็กต์ Kotlin Multiplatform ได้แล้ว
เวอร์ชัน 1.1.0-rc01
3 เมษายน 2024
androidx.datastore:datastore-*:1.1.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขประสิทธิภาพที่ลดลงซึ่ง
updateDataไม่ได้เพิ่มประสิทธิภาพการเขียนดิสก์หากข้อมูลใหม่เหมือนกับข้อมูลเก่า (d64cfb5) - แก้ไข Race Condition ที่
MultiProcessDataStoreอาจพลาดการลบล้างระหว่างการเริ่มต้น ((b/326141553),(094c2dd))
เวอร์ชัน 1.1.0-beta02
6 มีนาคม 2024
androidx.datastore:datastore-*:1.1.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- การปรับปรุงประสิทธิภาพใน
DataStoreจะรวบรวมการแจ้งเตือนการอัปเดตเมื่อตรวจพบเท่านั้น (b/267792241)- โปรดทราบว่าการเปลี่ยนแปลงนี้อาจทําให้เกิด
UncompletedCoroutinesErrorในการทดสอบหากคุณใช้ไลบรารีการทดสอบ Coroutines โปรดตรวจสอบว่าคุณส่งTestScope.backgroundScopeเมื่อเริ่มต้นDataStoreในการทดสอบเพื่อหลีกเลี่ยงปัญหานี้
- โปรดทราบว่าการเปลี่ยนแปลงนี้อาจทําให้เกิด
- แก้ไขปัญหาการเรียก
updateDataที่ซ้อนกันในอินสแตนซ์เดียวกันจะทำให้เกิดภาวะหยุดชะงัก (b/241760537) DataStoreไม่IOExceptionsแสดงข้อผิดพลาดอีกต่อไปหากลบSharedPreferencesไม่สำเร็จระหว่างการย้ายข้อมูล (b/195553816)- แก้ไขปัญหาที่การเปลี่ยนชื่อไฟล์ล้มเหลวระหว่าง
updateDataในสภาพแวดล้อม JVM ที่ไม่ใช่ Android (b/203087070) - แก้ไขปัญหาที่ไม่ได้จัดการ
CorruptionExceptionหลังจากเริ่มต้นDataStore(b/289582516)
เวอร์ชัน 1.1.0-beta01
10 มกราคม 2024
androidx.datastore:datastore-*:1.1.0-beta01 เปิดตัวโดยไม่มีการเปลี่ยนแปลงใดๆ ตั้งแต่ 1.1.0-alpha07 เวอร์ชัน 1.1.0-beta01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha07
29 พฤศจิกายน 2023
androidx.datastore:datastore-*:1.1.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
MultiProcessDataStoreFactoryไม่ใช่ฟีเจอร์ทดลองอีกต่อไป และเราได้นำคำอธิบายประกอบ@ExperimentalMultiProcessDataStoreออกทั้งหมดแล้ว (Ieee54, I8e607)
การแก้ไขข้อบกพร่อง
- เปิดตัวการนำคำอธิบายประกอบ
@ExperimentalMultiProcessDataStoreออกเป็นเวอร์ชัน 1.1.0-alpha07 (I8e607)
เวอร์ชัน 1.1.0-alpha06
1 พฤศจิกายน 2023
androidx.datastore:datastore-*:1.1.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้เมธอด
createSingleProcessCoordinatorของ Factory จะรับเส้นทางของไฟล์ (String,java.io.Fileและokio.Path) เพื่อให้สอดคล้องกับcreateMultiProcessCoordinator(I211c8, b/305755935)
เวอร์ชัน 1.1.0-alpha05
6 กันยายน 2023
androidx.datastore:datastore-*:1.1.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Datastore
FileStorageพร้อมให้บริการแก่สาธารณะแล้ว ดังนั้นไคลเอ็นต์จึงระบุพารามิเตอร์ที่กำหนดเองได้ (Icb985) - เปลี่ยนเครื่องมือสร้าง
OkioStorageเพื่อยอมรับInterProcessCoordinatorเพื่อให้ใช้ใน Android กับMultiProcessCoordinatorได้ (Iecea3)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
MultiProcessCoordinatorตรวจสอบไฟล์หลายรายการในไดเรกทอรีเดียวกันไม่ได้ - แก้ไขปัญหาตรวจหาไฟล์ที่ซ้ำกันไม่ได้หากไม่ได้ทำให้เส้นทางของไฟล์เป็นมาตรฐาน
- แก้ไขค่าที่ไม่ถูกต้องที่แสดงจาก
RxDataStore#isDisposed - แก้ไขการกำหนดค่า ProGuard ที่ขาดหายไปสำหรับอาร์ติแฟกต์
datstore-preferences-core
เวอร์ชัน 1.1.0-alpha04
5 เมษายน 2023
androidx.datastore:datastore-*:1.1.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ปรับปรุงการติดตั้งใช้งานภายในเพื่อหลีกเลี่ยงการแข่งขันที่
DataStoreโฟลว์ข้อมูลอาจส่งค่าที่เก่ากว่าหลังจากการอัปเดต
เวอร์ชัน 1.1.0-alpha03
24 มีนาคม 2023
androidx.datastore:datastore-*:1.1.0-alpha03 ได้รับการเผยแพร่แล้ว
การแก้ไขข้อบกพร่อง
- นำข้อจำกัดของ Dependency ออกจากอาร์ติแฟกต์ Maven เพื่อแก้ปัญหาการบิลด์ในเป้าหมาย Kotlin Native (b/274786186, KT-57531)
เวอร์ชัน 1.1.0-alpha02
22 มีนาคม 2023
androidx.datastore:datastore-*:1.1.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
หมายเหตุ
โปรดทราบว่าเวอร์ชันนี้มีการปรับโครงสร้างภายในที่สำคัญซึ่งรวมการใช้งานสำหรับ DataStore แบบกระบวนการเดียวและการใช้งาน DataStore แบบหลายกระบวนการ โปรดคอยสังเกตการเปลี่ยนแปลงลักษณะการทำงานที่อาจเกิดขึ้นโดยไม่ตั้งใจ (เช่น เวลาในการแจ้งเตือนการอัปเดต) คุณใช้คอมโพเนนต์เครื่องมือติดตามปัญหาเพื่อรายงานการเปลี่ยนแปลงดังกล่าวได้
ฟีเจอร์ใหม่
- ตอนนี้คุณใช้
DataStoreในโปรเจ็กต์ KMM ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของ DataStore ยังคงเป็นเวอร์ชันทดลอง แต่เราตัดสินใจที่จะผสานรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น - ฟีเจอร์แบบหลายกระบวนการจะย้ายจาก
androidx.datastore.multiprocessไปยังandroidx.datastore.core - เพิ่มเมธอด Factory ใหม่ใน
androidx.datastore.core.MultiProcessDataStoreFactoryเพื่อสร้างอินสแตนซ์ DataStore ด้วยออบเจ็กต์Storageสำหรับการดำเนินการกับไฟล์ - เพิ่มอินเทอร์เฟซใหม่
InterProcessCoordinatorที่ช่วยให้อินสแตนซ์ DataStore หลายรายการสื่อสารกันได้ในกระบวนการต่างๆ โปรดทราบว่าการใช้งานแบบหลายกระบวนการของInterProcessCoordinatorใช้ได้เฉพาะใน Android เท่านั้น
การเปลี่ยนแปลง API
- เพิ่ม
InterProcessCoordinatorลงในStorageConnectionในอินเทอร์เฟซ datastore-core (I555bb) - เปลี่ยน API ใน datastore-core
MultiProcessDataStoreFactoryเพื่อใช้ Storage (Iac02f) - ย้าย API สาธารณะใน datastore-multiprocess ไปยัง datastore-core (I76d7c)
PreferencesSerializerที่เปิดเผยจาก datastore-preferences-core (I4b788)- เพิ่มคำอธิบายประกอบ
@JvmDefaultWithCompatibility(I8f206)
เวอร์ชัน 1.1.0-alpha01
9 พฤศจิกายน 2022
androidx.datastore:datastore-*:1.1.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- รองรับกรณีการใช้งานแบบหลายกระบวนการซึ่งรับประกันความสอดคล้องของข้อมูลในอินสแตนซ์
DataStoreในกระบวนการต่างๆ เพิ่มMultiProcessDataStoreFactory#createเพื่อสร้างอินสแตนซ์DataStoreดังกล่าว - อินเทอร์เฟซพื้นที่เก็บข้อมูลใหม่ที่ช่วยให้เปลี่ยนกลไกการจัดเก็บข้อมูลพื้นฐานสำหรับ
Datastoreได้ มีการติดตั้งใช้งานสำหรับ java.io และ okioDataStoreมีเมธอดใหม่ที่ยอมรับออบเจ็กต์ Storage นี้
การเปลี่ยนแปลง API
- เปลี่ยน API ใน datastore-core
MultiProcessDataStoreFactoryเพื่อใช้ Storage (Iac02f) - ย้าย API สาธารณะใน datastore-multiprocess ไปยัง datastore-core (I76d7c)
PreferencesSerializerที่เปิดเผยจาก datastore-preferences-core (I4b788)
เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0
4 สิงหาคม 2021
androidx.datastore:datastore-*:1.0.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของเวอร์ชัน 1.0.0
Jetpack DataStore เป็นโซลูชันพื้นที่เก็บข้อมูลที่ช่วยให้คุณจัดเก็บคู่คีย์-ค่าหรือออบเจ็กต์ที่พิมพ์ด้วย Protocol Buffer ได้ DataStore ใช้โครูทีนและ Flow ของ Kotlin เพื่อจัดเก็บข้อมูลแบบไม่พร้อมกัน อย่างสม่ำเสมอ และแบบธุรกรรม
เวอร์ชัน 1.0.0-rc02
21 กรกฎาคม 2021
androidx.datastore:datastore-*:1.0.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ชี้แจงว่า
SharedPreferencesMigrationจะไม่ทำงานหากไม่มีคีย์ (Icfa32, b/192824325) - แก้ไขข้อบกพร่องที่
SharedPreferencesMigrationซึ่งสร้างด้วยMIGRATE_ALL_KEYSจะทำให้เกิดข้อยกเว้นหากยังไม่มีคีย์ที่ขอ (Ie318a, b/192824325)
เวอร์ชัน 1.0.0-rc01
30 มิถุนายน 2021
androidx.datastore:datastore-*:1.0.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้มีการเพิ่มไฟล์ .java ลงใน JAR สุดท้ายโดยไม่ตั้งใจ (I65d96, b/188985637)
เวอร์ชัน 1.0.0-beta02
16 มิถุนายน 2021
androidx.datastore:datastore-*:1.0.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
ClassVerificationFailure(b/187450483)
เวอร์ชัน 1.0.0-beta01
21 เมษายน 2021
androidx.datastore:datastore-*:1.0.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการโอเวอร์โหลด JVM สำหรับเมธอด Kotlin เท่านั้นออก (I2adc7)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ผู้มอบสิทธิ์พื้นที่เก็บข้อมูลอาจทำให้เกิดการรั่วไหลของบริบท (Ie96fc, b/184415662)
เวอร์ชัน 1.0.0-alpha08
10 มีนาคม 2021
androidx.datastore:datastore-*:1.0.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- ตอนนี้คุณเพิ่มการย้ายข้อมูลที่ขึ้นอยู่กับบริบทไปยังผู้รับมอบสิทธิ์ของพร็อพเพอร์ตี้
dataStoreและpreferencesDataStoreได้แล้ว (I4ef69, b/173726702) - เพิ่มฟังก์ชันตัวช่วยเพื่อรับชื่อไฟล์หากคุณไม่ได้ใช้ DatastoreDelegate หรือ context.createDataStore อีกต่อไป (I60f9a)
- ตอนนี้ Serializer writeTo และ readFrom จะระงับการทำงาน หากคุณใช้ Serializer คุณจะต้องอัปเดตฟังก์ชันให้เป็นฟังก์ชันระงับ (I1e58e)
- เพิ่มผู้รับมอบสิทธิ์ของพร็อพเพอร์ตี้สำหรับผู้ใช้ RxDataStore (Ied768, b/173726702)
การแก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดในการใช้งาน API เวอร์ชันทดลองแบบสาธารณะ (I6aa29, b/174531520)
เวอร์ชัน 1.0.0-alpha07
24 กุมภาพันธ์ 2021
androidx.datastore:datastore-*:1.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เราได้นำฟังก์ชันส่วนขยาย
Context.createDataStoreออกและแทนที่ด้วยตัวแทนพร็อพเพอร์ตี้ globalDataStore เรียกใช้ globalDataStore หนึ่งครั้งที่ระดับบนสุดในไฟล์ Kotlin เช่นval Context.myDataStore by dataStore(...)วางไว้ที่ระดับบนสุดของไฟล์ Kotlin เพื่อให้มีอินสแตนซ์เพียงรายการเดียว (I57215, b/173726702)
ตอนนี้ฟังก์ชัน RxDataStore อยู่ในคลาส RxDataStore แทนที่จะเป็นฟังก์ชันส่วนขยายใน DataStore (Idccdb, b/177691248)
หากต้องการย้ายข้อมูล EncryptedSharedPreferences (หรือ SharedPreferences ที่บูตโดยตรง) ไปยัง DataStore ตอนนี้คุณสามารถทำได้แล้วด้วยตัวสร้าง SharedPreferencesMigration ใหม่ที่ช่วยให้คุณแทรก SharedPreferences ได้ (I8e04e, b/177278510)
การแก้ไขข้อบกพร่อง
- ตอนนี้ DataStore จะแสดงข้อยกเว้นหากมี DataStore ที่ใช้งานอยู่หลายรายการสำหรับไฟล์เดียวกัน หากคุณไม่ได้จัดการ DataStore เป็น Singleton หรือไม่ได้ตรวจสอบว่าไม่มีอินสแตนซ์ 2 รายการของ DataStore ที่ใช้งานพร้อมกันสำหรับไฟล์ คุณอาจเห็นข้อยกเว้นเมื่ออ่านหรือเขียนไปยัง DataStore คุณแก้ไขปัญหานี้ได้โดยการจัดการ DataStore เป็น Singleton (Ib43f4, b/177691248)
- แก้ไขลักษณะการทำงานของการยกเลิกเมื่อมีการยกเลิกขอบเขตผู้โทร (I2c7b3)
เวอร์ชัน 1.0.0-alpha06
13 มกราคม 2021
androidx.datastore:datastore-*:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม Wrapper RxJava สำหรับ DataStore
datastore-rxjava2/3อาร์ติแฟกต์มี Wrapper สำหรับ DataStore API หลัก (RxDataStore,RxDataStoreBuilderและRxDataMigration) ส่วนอาร์ติแฟกต์datastore-preferences-rxjava2/3มี Builder สำหรับสร้าง Preferences DataStore
การเปลี่ยนแปลง API
- ซ่อนอินเทอร์เฟซ CorruptionHandler ไม่มีเหตุผลที่จะต้องทำให้เป็นแบบสาธารณะเนื่องจากโรงงาน DataStore ยอมรับเฉพาะ ReplaceFileCorruptionHandler (I0b3b3, b/176032264)
- เราได้นำเมธอด
preferencesKey<T>(name: String): Key<T>ออกและแทนที่ด้วยเมธอดที่เฉพาะเจาะจงสำหรับแต่ละประเภทที่รองรับ เช่น ตอนนี้preferencesKey<Int>("int")คือintPreferencesKey("int")(Ibcfac, b/170311106)
การแก้ไขข้อบกพร่อง
- แก้ไขเอกสารประกอบเกี่ยวกับ DataStoreFactory ซึ่งไม่ได้ระบุว่าระบบสร้างไฟล์ Datastore ในไดเรกทอรีย่อย "datastore/" (Ica222)
เวอร์ชัน 1.0.0-alpha05
2 ธันวาคม 2020
androidx.datastore:datastore-*:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- เพิ่มเอกสารประกอบและข้อยกเว้นที่ดียิ่งขึ้นเกี่ยวกับการเขียนพร้อมกันจาก Datastore (Ia98a2, b/173522155, b/173726702)
- ตอนนี้เราอนุญาต (แต่ไม่บังคับ) ให้ปิด OutputStream ที่ส่งไปยัง
Serializer.writeTo()ได้แล้ว (I5c9bf, b/173037611)
เวอร์ชัน 1.0.0-alpha04
17 พฤศจิกายน 2020
androidx.datastore:datastore-*:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาการแพ็กเกจที่ทำให้เกิดข้อขัดข้องต่อไปนี้ใน Preference Datastore
1.0.0-alpha03:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- มีการรายงานข้อขัดข้องครั้งแรกที่ b/173036843
- (I4712d, b/173036843)
เวอร์ชัน 1.0.0-alpha03
11 พฤศจิกายน 2020
androidx.datastore:datastore-*:1.0.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- ตอนนี้ค่ากำหนดรองรับค่าแบบ Double (ซึ่งมีประโยชน์หากคุณต้องการความแม่นยำมากกว่าค่าแบบ Float) (I5be8f, b/169471808)
การเปลี่ยนแปลง API
- สร้างการอ้างอิง Kotlin ล้วนสำหรับ DataStore เพื่อให้คอมไพล์ได้เร็วขึ้น
androidx.datastore:datastore-coreมีเฉพาะ API หลักของ Kotlin และandroidx.datastore:datastoreมี API ที่ขึ้นอยู่กับ Android (รวมถึงSharedPreferencesMigrationและตัวสร้างContext.createDataStore)(I42d75, b/168512698) - แยกเป้าหมายสำหรับที่เก็บข้อมูลค่ากำหนดเพื่อการคอมไพล์ Kotlin ที่เร็วขึ้น (Ia3c19)
ตอนนี้ Serializer ต้องมีพร็อพเพอร์ตี้ใหม่สำหรับค่าเริ่มต้นที่จะใช้หากไม่มีข้อมูลในดิสก์ ซึ่งจะช่วยให้การติดตั้งใช้งานซีเรียลไลเซอร์ที่กำหนดเองง่ายขึ้น ผู้ใช้จึงไม่ต้องจัดการสตรีมอินพุตที่ว่างเปล่าเป็นกรณีพิเศษ (สตรีมอินพุตที่ว่างเปล่าจะแยกวิเคราะห์ด้วย JSON ไม่ได้)
- นอกจากนี้ ตอนนี้ยังมีการตรวจสอบเพื่อยืนยันว่าสตรีมเอาต์พุตที่ระบุใน writeTo() ไม่ได้ปิด และหากปิดอยู่ ระบบจะส่งข้อยกเว้น (I16e29)
ทำให้ตัวสร้างสำหรับ SharedPreferencesView เป็นแบบภายใน โดยเดิมทีเราตั้งค่าให้เป็นแบบสาธารณะเพื่ออนุญาตให้มีการทดสอบ แต่การทดสอบควรสร้าง SharedPreferencesMigration และทดสอบกับ SharedPreferencesMigration นั้นแทน (I93891)
การแก้ไขข้อบกพร่อง
- ตอนนี้พารามิเตอร์
produceFileในDataStoreFactoryและPreferenceDataStoreFactoryเป็นพารามิเตอร์สุดท้ายในรายการแล้ว คุณจึงใช้ไวยากรณ์แลมบ์ดาท้ายของ Kotlin ได้ (Ibe7f1, b/169425442) - ตามข้อกำหนดใหม่ของ API ที่ชัดเจนสำหรับ Kotlin (I5ae1e)
ปัญหาที่ทราบ
- Preference Datastore ขัดข้องกับ
java.lang.NoClassDefFoundError(b/173036843)
เวอร์ชัน 1.0.0-alpha02
14 ตุลาคม 2020
androidx.datastore:datastore-core:1.0.0-alpha02 และ androidx.datastore:datastore-preferences:1.0.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มการป้องกันการเปลี่ยนแปลงใน datastore-core การเปลี่ยนแปลงทำให้การใช้งาน Datastore สำหรับผู้ที่ใช้ Datastore กับประเภทที่ไม่ใช่ Proto/ไม่ใช่ค่ากำหนดใช้งานไม่ได้ (I6aa84)
- เพิ่มเมธอด
toStringลงใน Preferences.kt เพื่อให้แก้ไขข้อบกพร่องของสถานะปัจจุบันได้ง่าย (I96006) - เพิ่มข้อยกเว้นเพื่อป้องกันการใช้
DataStore.Preferences(I1134d) ในทางที่ผิด - แก้ไขข้อบกพร่องที่ทำให้แอปขัดข้องเมื่อเริ่มต้น (I69237, b/168580258)
เวอร์ชัน 1.0.0-alpha01
2 กันยายน 2020
androidx.datastore:datastore-core:1.0.0-alpha01 และ androidx.datastore:datastore-preferences:1.0.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
Jetpack DataStore เป็นโซลูชันการจัดเก็บข้อมูลใหม่ที่ได้รับการปรับปรุงซึ่งมีจุดมุ่งหมายเพื่อแทนที่ SharedPreferences DataStore สร้างขึ้นจากโครูทีนและ Flow ของ Kotlin จึงมีการใช้งาน 2 แบบที่แตกต่างกัน ดังนี้
- Proto DataStore ซึ่งช่วยให้คุณจัดเก็บออบเจ็กต์ที่มีการพิมพ์ (ได้รับการสนับสนุนโดยบัฟเฟอร์โปรโตคอล)
- Preferences DataStore ซึ่งจัดเก็บคู่คีย์-ค่า
ระบบจะจัดเก็บข้อมูลแบบไม่พร้อมกัน สอดคล้องกัน และเป็นธุรกรรม ซึ่งช่วยแก้ปัญหาข้อเสียส่วนใหญ่ของ SharedPreferences