DataStore

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