DataStore
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 12 ตุลาคม 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
ประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน DataStore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
DataStore มีตัวเลือกต่างๆ สำหรับการทำให้เป็นอนุกรม ให้เลือกตัวเลือกใดตัวเลือกหนึ่ง นอกจากนี้ คุณยังเพิ่มการอ้างอิงที่ไม่มี Android ลงในการใช้งานอย่างใดอย่างหนึ่งได้ด้วย
เพิ่มทรัพยากร Dependency สำหรับการติดตั้งใช้งานที่ต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล ดังนี้
Preferences DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.1") }
หากต้องการเพิ่มการรองรับ RxJava (ไม่บังคับ) ให้เพิ่มทรัพยากร Dependency ต่อไปนี้
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.1") }
DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.1") }
เพิ่มทรัพยากร Dependency ที่ไม่บังคับต่อไปนี้สำหรับการรองรับ RxJava
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
หากต้องการทำให้เนื้อหาเป็นแบบอนุกรม ให้เพิ่มการอ้างอิงสำหรับการทำให้เป็นอนุกรมของ Protocol Buffers หรือ JSON
การซีเรียลไลซ์ JSON
หากต้องการใช้การซีเรียลไลซ์ JSON ให้เพิ่มค่าต่อไปนี้ลงในไฟล์ Gradle
Groovy
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" }
Kotlin
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") }
การทำให้เป็นอนุกรม Protobuf
หากต้องการใช้การซีเรียลไลซ์ Protobuf ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ Gradle
Groovy
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1" } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Kotlin
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1") } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker
เวอร์ชัน 1.3
เวอร์ชัน 1.3.0-rc01
12 ตุลาคม 2026
androidx.datastore:datastore-*:1.3.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ใช้
WindowCompat#enableEdgeToEdge(Window)แทนEdgeToEdge#enable()(Ibff3e)
การแก้ไขข้อบกพร่อง
- อัปเดตทรัพยากร Dependency ของ
androidx.lifecycle:lifecycle-runtimeเป็น 2.10.0 แล้ว ต้องใช้เวอร์ชันนี้เพื่อให้การตรวจสอบ Lint ของรันไทม์วงจรที่รวมมาทำงานร่วมกับ AGP เวอร์ชัน 9.5.0-alpha04 ขึ้นไปได้ (I99bfd, b/556807521)
เวอร์ชัน 1.3.0-alpha11
9 กันยายน 2569
androidx.datastore:datastore-*:1.3.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha11 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เส้นทางไฟล์ที่สำคัญจะไม่รวมอยู่ในข้อความ
CorruptionExceptionที่แสดงขึ้นระหว่างความล้มเหลวในการแยกวิเคราะห์ค่ากำหนดDataStore(Ia9e8f)
เวอร์ชัน 1.3.0-alpha10
29 กรกฎาคม 2026
androidx.datastore:datastore-*:1.3.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha10 มี คอมมิตเหล่านี้
การเปลี่ยนแปลง API
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919)
เวอร์ชัน 1.3.0-alpha09
6 พฤษภาคม 2026
androidx.datastore:datastore-*:1.3.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตั้งค่า
ReThrowCorruptionHandlerเป็นสาธารณะ (I137bb, b/427722902) - ทำให้วงจรการติดตามสอดคล้องกับการติดตามของระบบ (Ib391b)
เวอร์ชัน 1.3.0-alpha08
22 เมษายน 2026
androidx.datastore:datastore-*:1.3.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha08 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับ Origin Private File System (OPFS) ใน DataStore สำหรับแพลตฟอร์มเว็บ การติดตั้งใช้งานนี้จะเปิดตัว
WebOpfsStorageและรวมการรองรับสถาปัตยกรรมสำหรับ I/O ไฟล์แบบอะซิงโครนัส การแจ้งเตือนข้ามแท็บโดยใช้BroadcastChannelAPI และการล็อกแบบกระจายผ่านWeb Locks APIแบบเนทีฟสำหรับการเข้าถึงการเขียนแบบเอกสิทธิ์เฉพาะบุคคล Id7f5807 b/316376114
การเปลี่ยนแปลง API
- เปิดตัว API
WebLocalStorageและWebSessionStorageสำหรับการจัดการประเภทพื้นที่เก็บข้อมูลที่ชัดเจนในสภาพแวดล้อมเว็บ I35fa259b b/316376114
เวอร์ชัน 1.3.0-alpha07
11 มีนาคม 2026
androidx.datastore:datastore-*:1.3.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha07 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การรองรับการเข้ารหัส: เปิดตัวอาร์ติแฟกต์
androidx.datastore:datastore-tinkใหม่ที่รองรับการเข้ารหัส Datastore โดยใช้ไลบรารี Tink โมดูลนี้จะแนะนำAeadSerializerซึ่งเป็นคลาส Wrapper ใหม่ที่ใช้Serializer<T>และใช้ Authenticated Encryption with Associated Data (AEAD) ของ Tink เพื่อเข้ารหัสและถอดรหัสข้อมูลAeadSerializerพร้อมให้ใช้งานในแพลตฟอร์มเป้าหมาย JVM และ Android DataStoreBuilder API ใหม่: เปิดตัวDataStore.Builder<T>เป็นทางเลือกที่ปรับขนาดได้แทนDataStoreFactoryAPI ใหม่นี้ช่วยให้ผู้ใช้มีวิธีระบุตรรกะความเสียหายของตนเองผ่านsetCorruptionHandlerนอกจากนี้BuilderAPI ยังกำหนดให้เริ่มต้นDataStoreโดยใช้CoroutineContextแทนCoroutineScopeซึ่งเป็นการปรับปรุงเพื่อการทำงานพร้อมกันแบบมีโครงสร้าง เนื่องจากช่วยให้ผู้เรียกกำหนดลักษณะการทำงานของการดำเนินการ (เช่น Dispatcher ที่เฉพาะเจาะจง) ได้โดยไม่ต้องบังคับให้DataStoreจัดการอย่างไม่เหมาะสมหรือถูกจำกัดตามวงจรของขอบเขตของผู้เรียกหมายเหตุ: เราขอแนะนำให้ผู้ใช้ทุกคนย้ายข้อมูลจาก
DataStoreFactoryไปยัง APIDataStore.Builderใหม่ การกำหนดให้ใช้CoroutineContextแทนCoroutineScopeจะทำให้ API บังคับใช้การทำงานพร้อมกันที่มีโครงสร้างดีขึ้น ซึ่งจะช่วยให้มั่นใจได้ว่าการดำเนินการของ DataStore จะไม่ผูกกับวงจร UI ที่มีอายุสั้น (เช่นviewModelScope) ซึ่งจะช่วยป้องกันการยกเลิกก่อนเวลาอันควรและการสูญหายของข้อมูลที่อาจเกิดขึ้นคำเตือน: ตรวจสอบว่า
CoroutineContextที่ระบุให้กับ Builder มีJobและมีขอบเขตระดับแอปพลิเคชัน หากบริบทถูกยกเลิก การดำเนินการภายในของDataStoreจะสิ้นสุดลงก่อนเวลาอันควร
การเปลี่ยนแปลง API
เปิดตัวอาร์ติแฟกต์
androidx.datastore:datastore-tinkใหม่สำหรับการรองรับการเข้ารหัสDataStore(Ic106d, b/167697691)หากต้องการเข้ารหัสข้อมูลโดยใช้ Tink ให้ทำตามขั้นตอนต่อไปนี้
สร้างคีย์โดยใช้ Tink API ดังนี้
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleสร้าง
AeadSerializerที่รวม Serializer ที่มีอยู่:val aeadSerializer = AeadSerializer( // Use tink APIs to create an Aead object to encrypt/decrypt data. aead = keysetHandle.getPrimitive( RegistryConfiguration.get(), Aead::class.java, ), // AeadSerializer can wrap an existing serializer. wrappedSerializer = ExistingSerializer, // Specify a unique name to prevent a ciphertext swapping attack. associatedData = "settings.json".encodeToByteArray(), )ใช้
aeadSerializerนี้แทน Serializer เมื่อสร้างอินสแตนซ์ Datastore ดังนี้val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
เปิดตัว
DataStore.Builder<T>เป็นทางเลือกที่ทันสมัยและปรับขนาดได้แทนDataStoreFactory(I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
เวอร์ชัน 1.3.0-alpha06
25 กุมภาพันธ์ 2026
androidx.datastore:datastore-*:1.3.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้
DataStoreรองรับandroidx.tracingในแพลตฟอร์มเป้าหมาย Android แล้ว คุณสร้างDataStoreที่มีการติดตามได้โดยระบุอินสแตนซ์androidx.tracing.Tracerให้กับฟังก์ชันDataStoreFactory.createWithTracing()(I71bc2, b/427722902)
เวอร์ชัน 1.3.0-alpha05
28 มกราคม 2026
androidx.datastore:datastore-*:1.3.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha05 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มโปรไฟล์พื้นฐานลงใน Datastore แล้ว (3916245,b/469127532)
- ใช้การรองรับ WASM/JS ใน DataStore ผ่าน
localStorageซึ่งสร้างข้อได้เปรียบที่แตกต่างจากการใช้งานsessionStorageที่มีอยู่โดยเปิดใช้การแจ้งเตือนเหตุการณ์และการซิงค์ข้ามแท็บ (I67246, b/441511612)
เวอร์ชัน 1.3.0-alpha04
14 มกราคม 2026
androidx.datastore:datastore-*:1.3.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันการคัดลอกยูทิลิตีที่ใช้เพื่ออัปเดตข้อมูลสำหรับค่ากำหนด
DataStoreได้ (I70a18, b/467120382)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ข้อมูลไบนารีอาจมีรูปแบบไม่ถูกต้องในระหว่างการจัดเก็บโดยการแทนที่การจัดการสตริง UTF-8 ด้วยการเข้ารหัส Base64 สำหรับเว็บ (Ie3178, b/473790107)
เวอร์ชัน 1.3.0-alpha03
17 ธันวาคม 2025
androidx.datastore:datastore-*:1.3.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาการเปลี่ยนชื่อไฟล์ที่เก็บข้อมูลชั่วคราวไม่สำเร็จ (I94f89, b/203087070)
- แก้ไขปัญหาเพื่อป้องกันไม่ให้การอัปเดตถูกยกเลิกระหว่างการอ่าน/เขียนพร้อมกัน อาจเกิดสภาวะการแข่งขันระหว่างตัวรวบรวมใหม่ใน
DataStore.dataกับการเรียกupdateDataพร้อมกัน ซึ่งทําให้ตัวรวบรวมพลาดค่าใหม่ (I6a427, b/431787506)
เวอร์ชัน 1.3.0-alpha02
3 ธันวาคม 2025
androidx.datastore:datastore-*:1.3.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพิ่มเป้าหมาย js() ไปยัง
androidx.datastore(I1f62b, b/441511612) - บังคับใช้การจัดลำดับแบบ FIFO ในการอัปเดต
GuavaDataStoreรายการ (I6fd00,b/451491257)
เวอร์ชัน 1.3.0-alpha01
19 พฤศจิกายน 2025
เปิดตัว androidx.datastore:datastore-*:1.3.0-alpha01 แล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับ KMP Web ใน
DataStoreโดยใช้sessionStorageAPI ฟีเจอร์นี้ช่วยให้DataStoreเก็บข้อมูลไว้ชั่วคราวภายในแท็บเบราว์เซอร์เดียวได้ (I60fad, b/316376114)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
11 มีนาคม 2026
androidx.datastore:datastore-*:1.2.1เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีการเปลี่ยนแปลงเหล่านี้
ไม่มีการเปลี่ยนแปลง
- รุ่นนี้มีการแก้ไขข้อบกพร่องเล็กน้อยเกี่ยวกับโครงสร้างพื้นฐาน และไม่มีการเปลี่ยนแปลง Datastore API หรือลักษณะการทำงานจากเวอร์ชัน 1.2.0
เวอร์ชัน 1.2.0
19 พฤศจิกายน 2025
เปิดตัว androidx.datastore:datastore-*:1.2.0 แล้ว เวอร์ชัน 1.2.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่รุ่น 1.1.0
การรองรับ Java/Guava:
- เพิ่มโมดูล
datastore-guavaใหม่เพื่อแสดง API ที่เหมาะกับผู้ใช้ Java และ GuavaListenableFutureผ่านGuavaDataStore - เพิ่มการรองรับหลายกระบวนการภายใน
GuavaDataStore - เพิ่มการโอเวอร์โหลดสำหรับ
GuavaDataStore.fromที่ยอมรับExecutorของ Java (แทนCoroutineContext) และใช้androidx.core.util.Function
การรองรับ Direct Boot:
- ตอนนี้ระบบรองรับการใช้งาน DataStore ในโหมดการบูตโดยตรงแล้ว API ใหม่ๆ เช่น
createInDeviceProtectedStorage()ในDataStoreFactoryและdeviceProtectedDataStore()ในDataStoreDelegateช่วยให้สร้าง DataStore ภายในพื้นที่เก็บข้อมูลที่มีการคุ้มครองอุปกรณ์ได้
การเปลี่ยนแปลงพื้นที่เก็บข้อมูลและ API:
- เพิ่ม
PreferencesFileSerializerที่ใช้androidx.datastore.core.Serializerเพื่อใช้กับFileStorageแล้ว - กำหนดคอนสตรัคเตอร์เริ่มต้นสำหรับ
ReplaceFileCorruptionHandlerเพื่อการใช้งานโค้ดทั่วไป
แก้ไขข้อบกพร่อง
- แก้ไข
java.lang.UnsatisfiedLinkErrorเมื่อใช้DataStoreในแอปที่เพิ่มประสิทธิภาพด้วย R8 แต่ไม่ได้ใช้ไฟล์ ProGuard มาตรฐาน - แก้ไขปัญหาที่การดำเนินการ
GuavaDataStoreอาจทำงานอย่างไม่ถูกต้องในเทรดการเรียก (เช่น เทรดหลัก) แทนที่จะเป็น Dispatcher ของ IO ที่ระบุ - แก้ไข
FileNotFoundExceptionปัญหาในOkioStorageเมื่อเริ่มต้นโดยเพิ่มความพยายามครั้งที่ 2 ในการอ่านข้อมูลในกรณีที่มีภาวะแข่งขัน
เวอร์ชัน 1.2.0-rc01
5 พฤศจิกายน 2025
เปิดตัว androidx.datastore:datastore-*:1.2.0-rc01 แล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 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 Dispatcher ที่ระบุ (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 ของปลั๊กอิน KMP ของ AGP ใหม่ ซึ่งป้องกันไม่ให้ระบบรวมข้อมูลเมตาสำหรับแพลตฟอร์มเป้าหมายทั้งหมดโดยอัตโนมัติ ข้อบกพร่องนี้ทำให้เมธอด DataStore Android บางเมธอดไม่ปรากฏในบิลด์ของไคลเอ็นต์อีกต่อไป การแก้ไขเกี่ยวข้องกับการใช้ DSLandroidเวอร์ชันเก่าใน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ที่พบเมื่อเริ่มต้นแอปแล้ว หากการพยายามอ่านไฟล์ครั้งแรกไม่สำเร็จ ระบบจะพยายามอ่านไฟล์ครั้งที่ 2 ในกรณีที่เกิดภาวะแข่งขันเนื่องจากไฟล์ถูกสร้างขึ้นโดยกระบวนการอื่นระหว่างการอ่านครั้งแรก (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 เกี่ยวกับข้อผิดพลาด "Resource deadlock would occur" ในกรณีที่เกิดขึ้นไม่บ่อยนักที่อินสแตนซ์
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) - แก้ไขภาวะแข่งขันที่
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จะรับเส้นทางไฟล์ (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 แบบหลายกระบวนการ โปรดคอยสังเกตการเปลี่ยนแปลงลักษณะการทำงานที่อาจไม่ได้ตั้งใจ (เช่น เวลาของการแจ้งเตือนการอัปเดต) คุณสามารถใช้คอมโพเนนต์ Issue Tracker เพื่อรายงานการเปลี่ยนแปลงดังกล่าว
ฟีเจอร์ใหม่
- ตอนนี้คุณใช้
DataStoreในโปรเจ็กต์ KMM ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของ DataStore ยังอยู่ในขั้นทดลอง แต่เราตัดสินใจรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น - ระบบจะย้ายฟีเจอร์แบบหลายกระบวนการจาก
androidx.datastore.multiprocessไปยังandroidx.datastore.core - เพิ่มเมธอดแฟกทอรีใหม่ใน
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 เป็นโซลูชันพื้นที่เก็บข้อมูลที่ช่วยให้คุณจัดเก็บคู่คีย์-ค่าหรือออบเจ็กต์ที่พิมพ์ด้วยบัฟเฟอร์โปรโตคอลได้ 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 Overload สำหรับเมธอด Kotlin เท่านั้นออก (I2adc7)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ผู้มอบสิทธิ์ Datastore อาจทำให้เกิดการรั่วไหลของบริบท (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) - เพิ่มฟังก์ชันตัวช่วยเพื่อรับชื่อไฟล์หากคุณไม่ได้ใช้ตัวแทน Datastore หรือ 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 Constructor ใหม่ที่ช่วยให้คุณแทรก SharedPreferences ได้ (I8e04e, b/177278510)
แก้ไขข้อบกพร่อง
- ตอนนี้ Datastore จะแสดงข้อยกเว้นหากมี Datastore ที่ใช้งานอยู่หลายรายการสำหรับไฟล์เดียวกัน หากคุณไม่ได้จัดการ DataStore เป็น Singleton หรือไม่ได้ตรวจสอบว่าไม่มีอินสแตนซ์ DataStore 2 รายการที่ทำงานพร้อมกันสำหรับไฟล์หนึ่งๆ คุณอาจเห็นข้อยกเว้นเมื่ออ่านหรือเขียนลงใน 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มีเครื่องมือสร้างเพื่อสร้าง 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 Trailing Lambda ได้ (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