พื้นที่เก็บข้อมูล

จัดเก็บข้อมูลแบบไม่พร้อมกัน สม่ำเสมอ และธุรกรรม โดยแก้ไขข้อเสียบางอย่างของ SharedPreferences
อัปเดตล่าสุด รุ่นที่เสถียร ตัวเลือกถอนการอ้างสิทธิ์ รุ่นเบต้า รุ่นอัลฟ่า
1 พฤษภาคม 2024 1.1.1 - - -

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน DataStore คุณต้องเพิ่มที่เก็บของ Google Maven ไปยัง อ่านที่เก็บ Maven ของ Google เพื่อดูข้อมูลเพิ่มเติม

DataStore มีการใช้งาน 2 แบบ ได้แก่ ค่ากำหนดและโปรโตคอล โปรดเลือกอย่างใดอย่างหนึ่ง คุณยังเพิ่มทรัพยากร Dependency ที่ไม่มี Android ไปยัง การใช้งานของคุณ

เพิ่มทรัพยากร Dependency สำหรับการติดตั้งใช้งานที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล

ที่เก็บข้อมูลค่ากำหนด

Groovy

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

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.1"

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.1"
    }
    

Kotlin

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

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.1")

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.1")
    }
    

Proto DataStore

ดึงดูด

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.1"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.1"

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.1"
    }
    

Kotlin

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.1")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.1")

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.1")
    }
    

ความคิดเห็น

ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูที่ ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนที่จะสร้างใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างรายการใหม่

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

เวอร์ชัน 1.1

เวอร์ชัน 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)
  • แก้ไขเงื่อนไขการแข่งขันที่ 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 เริ่มต้นได้รับเส้นทางของไฟล์ (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

  • พื้นที่เก็บข้อมูล 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 (b/274786186, KT-57531)

เวอร์ชัน 1.1.0-alpha02

22 มีนาคม 2023

ปล่อย androidx.datastore:datastore-*:1.1.0-alpha02 แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้

หมายเหตุ

โปรดทราบว่าเวอร์ชันนี้มีการปรับโครงสร้างภายในที่สำคัญซึ่งผสานการใช้งานสำหรับการติดตั้งใช้งาน DataStore กับกระบวนการเดียวและแบบหลายกระบวนการ โปรดคอยตรวจสอบการเปลี่ยนแปลงลักษณะการทำงานที่ไม่ได้ตั้งใจที่อาจเกิดขึ้น (เช่น ช่วงเวลาของการแจ้งเตือนการอัปเดต) คุณใช้คอมโพเนนต์เครื่องมือติดตามปัญหาเพื่อรายงานการเปลี่ยนแปลงดังกล่าวได้

ฟีเจอร์ใหม่

  • คุณสามารถใช้ 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 ใน MultiProcessDataStoreFactory ของ Datastore-core เพื่อใช้พื้นที่เก็บข้อมูล (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 แห่งมีวิธีการใหม่ที่ยอมรับออบเจ็กต์พื้นที่เก็บข้อมูลนี้

การเปลี่ยนแปลง API

  • เปลี่ยน API ใน MultiProcessDataStoreFactory ของ Datastore-core เพื่อใช้พื้นที่เก็บข้อมูล (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 ใช้ Kotlin coroutine และ Flow เพื่อจัดเก็บข้อมูลแบบไม่พร้อมกัน สม่ำเสมอ และธุรกรรม

เวอร์ชัน 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)
  • เพิ่มฟังก์ชันตัวช่วยเพื่อรับชื่อไฟล์ หากคุณไม่ได้ใช้การมอบสิทธิ์พื้นที่เก็บข้อมูลหรือ 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 1 ครั้งที่ระดับบนสุดในไฟล์ kotlin เช่น

    val Context.myDataStore by dataStore(...)
    

    วางโค้ดนี้ที่ระดับบนสุดของไฟล์ kotlin เพื่อให้มีเพียงรายการเดียว (I57215, b/173726702)

  • ตอนนี้ฟังก์ชัน RxDataStore อยู่ในคลาส RxDataStore แทนที่จะเป็นฟังก์ชันส่วนขยายใน DataStore (Idccdb, b/177691248)

  • หากต้องการย้ายข้อมูล EncryptedSharedPreferences (หรือการเปิดเครื่องที่แชร์ค่ากำหนดโดยตรง) ไปยัง DataStore ตอนนี้คุณสามารถดำเนินการดังกล่าวได้ด้วยตัวสร้าง SharedPreferencesMigration ใหม่ที่จะให้คุณแทรก SharedPreferences (I8e04e, b/177278510)

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

  • ตอนนี้ DataStore จะส่งข้อยกเว้นหากมี DataStore ที่ใช้งานอยู่หลายรายการสำหรับไฟล์เดียวกัน หากคุณไม่ได้จัดการ DataStore แบบ Singleton หรือตรวจสอบว่าไม่มีอินสแตนซ์ของ 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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม RxJava Wrapper สำหรับ DataStore แล้ว อาร์ติแฟกต์ datastore-rxjava2/3 มี Wrapper สำหรับ DataStore API หลัก (RxDataStore, RxDataStoreBuilder และ RxDataMigration) อาร์ติแฟกต์ datastore-preferences-rxjava2/3 มีเครื่องมือสร้างเพื่อสร้าง Preferences DataStore

การเปลี่ยนแปลง API

  • ซ่อนอินเทอร์เฟซ CorruptionHandler และไม่มีเหตุผลที่ทำให้วิดีโอนี้เป็นแบบสาธารณะ เนื่องจากโรงงาน DataStore ยอมรับเฉพาะ ReplaceFileCorruptionHandler (I0b3b3, b/176032264)
  • เราได้นำเมธอด preferencesKey<T>(name: String): Key<T> ออกและแทนที่ด้วยเมธอดเฉพาะของแต่ละประเภทที่รองรับ เช่น preferencesKey<Int>("int") ในตอนนี้คือ intPreferencesKey("int") (Ibcfac, b/170311106)

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

  • แก้ไขเอกสารเกี่ยวกับ DataStorefactor ซึ่งระบุว่าไฟล์พื้นที่เก็บข้อมูลสร้างขึ้นในไดเรกทอรีย่อย “datastore/” (Ica222)

เวอร์ชัน 1.0.0-alpha05

2 ธันวาคม 2020

ปล่อย androidx.datastore:datastore-*:1.0.0-alpha05 แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้

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

  • เพิ่มเอกสารประกอบที่ดีขึ้นและข้อยกเว้นเกี่ยวกับการเขียนพร้อมกันจากพื้นที่เก็บข้อมูล (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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ค่ากำหนดรองรับค่า 2 เท่าแล้ว (ซึ่งจะเป็นประโยชน์หากคุณต้องการความแม่นยำมากกว่าจำนวนลอยตัว) (I5be8f, b/169471808)

การเปลี่ยนแปลง API

  • สร้าง Dependency ของ Kotlin โดยเฉพาะสำหรับพื้นที่เก็บข้อมูลเพื่อให้คอมไพล์ได้เร็วขึ้น androidx.datastore:datastore-core มี kotlin หลักเท่านั้น และ androidx.datastore:datastore มี API ที่ขึ้นอยู่กับ Android (รวมถึง SharedPreferencesMigration และเครื่องมือสร้าง Context.createDataStore)(I42d75, b/168512698)
  • การแยกเป้าหมายสำหรับการจัดเก็บข้อมูลค่ากำหนดเพื่อการคอมไพล์ Kotlin ที่เร็วขึ้น (Ia3c19)
  • ตอนนี้ตัวซีเรียลไลเซอร์ต้องการพร็อพเพอร์ตี้ใหม่สำหรับค่าเริ่มต้นที่จะใช้หากไม่มีข้อมูลในดิสก์ วิธีนี้จะช่วยให้ใช้งาน Serializer ที่กำหนดเองได้ง่ายขึ้น ผู้ใช้จึงไม่ต้องใส่สตรีมอินพุตว่างเปล่าในกรณีพิเศษ (สตรีมอินพุตที่ว่างเปล่าจะไม่แยกวิเคราะห์ด้วย JSON)

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

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

  • ตอนนี้พารามิเตอร์ produceFile ใน DataStoreFactory และ PreferenceDataStoreFactory คือพารามิเตอร์สุดท้ายในรายการแล้ว คุณจึงใช้ไวยากรณ์ lambda ต่อท้ายของ kotlin ได้ (Ibe7f1, b/169425442)
  • การปฏิบัติตามข้อกำหนด API ใหม่อย่างชัดแจ้งสำหรับ Kotlin (I5ae1e)

ปัญหาที่ทราบ

  • ค่ากำหนด 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 Mutation ทำลายการใช้งานพื้นที่เก็บข้อมูลสำหรับผู้ที่ใช้พื้นที่เก็บข้อมูลด้วยประเภทที่ไม่ใช่โปรโตคอล/ไม่ใช่ค่ากำหนด (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 สร้างขึ้นจาก Kotlin coroutines และ Flow โดยมีการใช้งานที่แตกต่างกัน 2 แบบ ดังนี้

  • Proto DataStore ที่ช่วยให้คุณจัดเก็บออบเจ็กต์ที่พิมพ์ (สนับสนุนโดยบัฟเฟอร์โปรโตคอล)
  • ค่ากำหนด DataStore ซึ่งจัดเก็บคู่คีย์-ค่า

ข้อมูลจะได้รับการจัดเก็บแบบไม่พร้อมกัน สม่ำเสมอ และเป็นธุรกรรมเพื่อเอาชนะข้อเสียส่วนใหญ่ของ SharedPreferences