DataStore

จัดเก็บข้อมูลแบบไม่พร้อมกัน อย่างสม่ำเสมอ และแบบธุรกรรม ซึ่งช่วยแก้ปัญหาข้อเสียบางอย่างของ SharedPreferences
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
5 พฤศจิกายน 2025 1.1.7 1.2.0-rc01 - -

ประกาศทรัพยากร 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.1.7"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-preferences-core:1.1.7"
    }
    

Kotlin

    dependencies {
        // Preferences DataStore (SharedPreferences like APIs)
        implementation("androidx.datastore:datastore-preferences:1.1.7")

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-preferences-core:1.1.7")
    }
    

หากต้องการเพิ่มการรองรับ RxJava (ไม่บังคับ) ให้เพิ่มทรัพยากร Dependency ต่อไปนี้

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.7"
    }
    

Kotlin

    dependencies {
        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.7")
    }
    

DataStore

เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle

Groovy

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation "androidx.datastore:datastore:1.1.7"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-core:1.1.7"
    }
    

Kotlin

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation("androidx.datastore:datastore:1.1.7")

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-core:1.1.7")
    }
    

เพิ่มทรัพยากร Dependency ที่ไม่บังคับต่อไปนี้สำหรับการรองรับ RxJava

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.7"
    }
    

Kotlin

    dependencies {
        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.7")
    }
    

หากต้องการทำให้เนื้อหาเป็นแบบอนุกรม ให้เพิ่มการอ้างอิงสำหรับการทำให้เป็นอนุกรมของ 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 ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 1.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 ที่ระบุ (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 และ Guava ListenableFuture ผ่าน GuavaDataStore (Iadd5e0)
  • ตอนนี้ระบบรองรับการใช้งาน DataStore ในโหมด DirectBoot แล้ว หากต้องการสร้างที่เก็บข้อมูลที่จะใช้ในโหมดการบูตโดยตรง คุณต้องสร้างที่เก็บข้อมูลดังกล่าวภายในที่เก็บข้อมูลที่อุปกรณ์ป้องกัน ซึ่งทำได้โดยใช้ DataStore API ใหม่ต่อไปนี้ 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 การเปลี่ยนแปลงนี้มีผลโดยการเปิดตัวPreferencesFileSerializer b/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 ที่ MultiProcess DataStore อาจพลาดการลบล้างระหว่างการเริ่มต้น ((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 และ okio DataStore มีเมธอดใหม่ที่ยอมรับออบเจ็กต์ 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

เวอร์ชัน 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 ต้องมีพร็อพเพอร์ตี้ใหม่สำหรับค่าเริ่มต้นที่จะใช้หากไม่มีข้อมูลในดิสก์ ซึ่งจะช่วยให้การติดตั้งใช้งาน Serializer ที่กำหนดเองง่ายขึ้น ผู้ใช้จึงไม่ต้องจัดการสตรีมอินพุตที่ว่างเปล่าเป็นกรณีพิเศษ (สตรีมอินพุตที่ว่างเปล่าจะแยกวิเคราะห์ด้วย JSON ไม่ได้)

    • นอกจากนี้ ตอนนี้ยังมีการตรวจสอบเพื่อยืนยันว่าสตรีมเอาต์พุตที่ระบุใน writeTo() ไม่ได้ปิด และหากปิดอยู่ ระบบจะส่งข้อยกเว้น (I16e29)
  • ทำให้ตัวสร้างสำหรับ SharedPreferencesView เป็นแบบภายใน โดยเดิมทีเราตั้งค่าให้เป็นแบบสาธารณะเพื่ออนุญาตให้มีการทดสอบ แต่การทดสอบควรสร้าง SharedPreferencesMigration และทดสอบกับ SharedPreferencesMigration นั้นแทน (I93891)

การแก้ไขข้อบกพร่อง

  • ตอนนี้พารามิเตอร์ produceFile ใน DataStoreFactory และ PreferenceDataStoreFactory เป็นพารามิเตอร์สุดท้ายในรายการแล้ว จึงช่วยให้คุณใช้ไวยากรณ์ Lambda ต่อท้ายของ 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