DataStore

Lưu trữ dữ liệu một cách không đồng bộ, có tính nhất quán và dựa trên giao dịch, giúp khắc phục một số hạn chế của SharedPreferences
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 21 tháng 10 năm 2026 1.3.0 - - -

Khai báo phần phụ thuộc

Để thêm phần phụ thuộc trên DataStore, bạn phải thêm kho lưu trữ Maven của Google vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

DataStore cung cấp nhiều lựa chọn để chuyển đổi tuần tự , hãy chọn một trong hai. Bạn cũng có thể thêm các phần phụ thuộc ngoài Android để triển khai.

Thêm các phần phụ thuộc cần thiết để triển khai trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Preferences DataStore

Thêm các dòng sau vào phần phụ thuộc của tệp gradle:

Groovy

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

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

Kotlin

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

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

Để thêm tính năng hỗ trợ RxJava (không bắt buộc), hãy thêm các phần phụ thuộc sau:

Groovy

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

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

Kotlin

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

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

DataStore

Thêm các dòng sau vào phần phụ thuộc của tệp gradle:

Groovy

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

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

Kotlin

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

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

Thêm các phần phụ thuộc không bắt buộc sau đây để hỗ trợ RxJava:

Groovy

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

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

Kotlin

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

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

Để chuyển đổi tuần tự nội dung, hãy thêm các phần phụ thuộc cho tính năng chuyển đổi tuần tự JSON hoặc vùng đệm giao thức.

Chuyển đổi tuần tự JSON

Để sử dụng tính năng chuyển đổi tuần tự JSON, hãy thêm nội dung sau vào tệp Gradle của bạn:

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")
    }
    

Chuyển đổi tuần tự Protobuf

Để sử dụng quy trình chuyển đổi tuần tự Protobuf, hãy thêm nội dung sau vào tệp Gradle của bạn:

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")
                }
            }
        }
    }
    

Phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Trình theo dõi sự cố để biết thêm thông tin.

Phiên bản 1.3

Phiên bản 1.3.0

Ngày 21 tháng 10 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0. Phiên bản 1.3.0 bao gồm các thay đổi sau.

Những thay đổi quan trọng kể từ phiên bản 1.2.0:

Tính năng mới

  • Hỗ trợ bộ nhớ web: Ra mắt các tuỳ chọn bộ nhớ web KMP, cho phép lưu trữ dữ liệu linh hoạt trên các mục tiêu web:

    • sessionStorage (WebSessionStorage): Cho phép lưu trữ dữ liệu tạm thời trong một thẻ trình duyệt.
    • localStorage (WebLocalStorage): Cho phép lưu trữ ổn định bằng thông báo sự kiện và đồng bộ hoá trên nhiều thẻ.
    • Hệ thống tệp riêng tư gốc (WebOpfsStorage): Hỗ trợ hệ thống tệp thông qua OPFS, có tính năng I/O tệp không đồng bộ và thông báo trên nhiều thẻ.
  • Hỗ trợ mã hoá (datastore-tink): Thêm cấu phần phần mềm androidx.datastore:datastore-tink mới, hỗ trợ mã hoá bằng thư viện Tink. Thư viện này giới thiệu AeadSerializer để mã hoá và giải mã dữ liệu bằng phương thức Mã hoá đã xác thực với dữ liệu liên kết (AEAD).

  • Hỗ trợ theo dõi: Thêm tính năng hỗ trợ cho androidx.tracing trên nền tảng mục tiêu Android.

  • API DataStore.Builder: Ra mắt DataStore.Builder<T> dưới dạng giải pháp thay thế hiện đại, có thể mở rộng cho DataStoreFactory. Hàm này yêu cầu CoroutineContext thay vì CoroutineScope để cải thiện tính đồng thời có cấu trúc.

  • Hồ sơ cơ sở: Thêm hồ sơ cơ sở vào datastore để nâng cao hiệu suất khởi động.

Thay đổi về API

  • Các API DataStore.Builder, ReThrowCorruptionHandler và InterProcessCoordinator đã được cập nhật lên public.

Bản sửa lỗi và cải tiến

  • Thêm thông tin đường dẫn tệp cơ bản vào thông báo CorruptionException để cải thiện khả năng gỡ lỗi khi xảy ra lỗi phân tích cú pháp.

  • Đã khắc phục khả năng mất dữ liệu trong GuavaDataStore bằng cách thực thi thứ tự Nhập trước xuất trước (FIFO) nghiêm ngặt cho các bản cập nhật.

Phiên bản 1.3.0-rc01

Ngày 12 tháng 10 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-rc01. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.

Thay đổi về API

  • Sử dụng WindowCompat#enableEdgeToEdge(Window) thay vì EdgeToEdge#enable() (Ibff3e)

Sửa lỗi

  • Phần phụ thuộc androidx.lifecycle:lifecycle-runtime đã được cập nhật lên phiên bản 2.10.0. Bạn cần có phiên bản này để chạy các quy trình kiểm tra tìm lỗi mã nguồn trong thời gian chạy của vòng đời đi kèm với AGP phiên bản 9.5.0-alpha04 trở lên. (I99bfd, b/556807521)

Phiên bản 1.3.0-alpha11

Ngày 9 tháng 9 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha11. Phiên bản 1.3.0-alpha11 bao gồm các thay đổi sau.

Sửa lỗi

  • Đường dẫn tệp cơ bản không có trong thông báo CorruptionException được gửi khi không phân tích cú pháp được lựa chọn ưu tiên DataStore. (Ia9e8f)

Phiên bản 1.3.0-alpha10

Ngày 29 tháng 7 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha10. Phiên bản 1.3.0-alpha10 bao gồm các thay đổi sau.

Thay đổi về API

  • GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration. (I26e56, b/514941919)

Phiên bản 1.3.0-alpha09

Ngày 6 tháng 5 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha09. Phiên bản 1.3.0-alpha09 bao gồm các thay đổi sau.

Thay đổi về API

  • Đặt ReThrowCorruptionHandler ở chế độ công khai. (I137bb, b/427722902)
  • Đảm bảo vòng đời truy vết nhất quán với truy vết hệ thống. (Ib391b)

Phiên bản 1.3.0-alpha08

Ngày 22 tháng 4 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha08. Phiên bản 1.3.0-alpha08 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm tính năng hỗ trợ Origin Private File System (OPFS) trong Kho dữ liệu cho nền tảng web. Cách triển khai này giới thiệu WebOpfsStorage và bao gồm tính năng hỗ trợ kiến trúc cho I/O tệp không đồng bộ, thông báo trên nhiều thẻ bằng API BroadcastChannel và khoá phân phối thông qua Web Locks API gốc để có quyền ghi riêng. Id7f5807 b/316376114

Thay đổi về API

  • Ra mắt API WebLocalStorage và WebSessionStorage để quản lý rõ ràng loại bộ nhớ trong môi trường Web. I35fa259b b/316376114

Phiên bản 1.3.0-alpha07

Ngày 11 tháng 3 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha07. Phiên bản 1.3.0-alpha07 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ mã hoá: Ra mắt cấu phần phần mềm androidx.datastore:datastore-tink mới hỗ trợ mã hoá kho dữ liệu bằng thư viện Tink. Mô-đun này giới thiệu AeadSerializer, một lớp bao bọc mới triển khai Serializer<T> và sử dụng tính năng Mã hoá đã xác thực với dữ liệu liên kết (AEAD) của Tink để mã hoá và giải mã dữ liệu. AeadSerializer có thể dùng trong các nền tảng mục tiêu JVM và Android.
  • API DataStore Builder mới: Ra mắt DataStore.Builder<T> làm giải pháp thay thế có thể mở rộng cho DataStoreFactory. Với API mới này, người dùng hiện có thể cung cấp logic hỏng hóc của riêng họ thông qua setCorruptionHandler. Ngoài ra, API Builder yêu cầu khởi chạy DataStore bằng CoroutineContext thay vì CoroutineScope. Đây là một điểm cải tiến cho tính năng đồng thời có cấu trúc, vì tính năng này cho phép phương thức gọi xác định hành vi thực thi (như Trình điều phối cụ thể) mà không buộc DataStore phải quản lý không đúng cách hoặc bị ràng buộc bởi vòng đời của phạm vi phương thức gọi.

    Lưu ý: Bạn nên di chuyển từ DataStoreFactory sang API DataStore.Builder mới. Bằng cách yêu cầu CoroutineContext thay vì CoroutineScope, API này thực thi mô hình đồng thời có cấu trúc tốt hơn. Điều này đảm bảo các thao tác của DataStore không bị ràng buộc với vòng đời giao diện người dùng ngắn hạn (ví dụ: viewModelScope), ngăn chặn việc huỷ sớm và nguy cơ mất dữ liệu.

    Cảnh báo: Đảm bảo rằng CoroutineContext được cung cấp cho Trình tạo có Job và có phạm vi ứng dụng. Nếu bối cảnh bị huỷ, các hoạt động nội bộ của DataStore sẽ bị chấm dứt sớm.

Thay đổi về API

  • Ra mắt cấu phần phần mềm androidx.datastore:datastore-tink mới để hỗ trợ mã hoá DataStore. (Ic106d, b/167697691)

    Để mã hoá dữ liệu bằng Tink, hãy làm theo các bước sau:

    1. Tạo khoá bằng API Tink:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. Tạo một AeadSerializer gói trình chuyển đổi tuần tự hiện có:

      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(),
      )
      
    3. Sử dụng aeadSerializer này thay cho trình chuyển đổi tuần tự khi tạo thực thể kho dữ liệu:

      val dataStore = dataStore(
          fileName = "settings.json",
          serializer = aeadSerializer,
          scope = scope,
      )
      
  • Ra mắt DataStore.Builder<T> làm giải pháp thay thế hiện đại, có thể mở rộng cho DataStoreFactory. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)

Phiên bản 1.3.0-alpha06

Ngày 25 tháng 2 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha06. Phiên bản 1.3.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • DataStore hiện hỗ trợ androidx.tracing trên nền tảng mục tiêu Android. Bạn có thể tạo DataStore có tính năng theo dõi bằng cách cung cấp một thực thể androidx.tracing.Tracer cho hàm DataStoreFactory.createWithTracing(). (I71bc2, b/427722902)

Phiên bản 1.3.0-alpha05

Ngày 28 tháng 1 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha05. Phiên bản 1.3.0-alpha05 bao gồm các thay đổi sau.

Tính năng mới

  • Đã thêm hồ sơ cơ sở vào kho dữ liệu. (3916245,b/469127532).
  • Triển khai tính năng hỗ trợ WASM/JS trong DataStore thông qua localStorage. Điều này tạo ra lợi thế rõ rệt so với cách triển khai sessionStorage hiện tại bằng cách cho phép thông báo sự kiện và đồng bộ hoá trên nhiều thẻ. (I67246, b/441511612)

Phiên bản 1.3.0-alpha04

Ngày 14 tháng 1 năm 2026

Phát hành androidx.datastore:datastore-*:1.3.0-alpha04. Phiên bản 1.3.0-alpha04 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm hàm sao chép tiện ích có thể dùng để cập nhật dữ liệu cho DataStore của Preferences. (I70a18, b/467120382)

Sửa lỗi

  • Đã giải quyết vấn đề dữ liệu nhị phân có thể bị sai định dạng trong quá trình lưu trữ bằng cách thay thế việc xử lý chuỗi UTF-8 bằng phương thức mã hoá Base64 cho Web. (Ie3178, b/473790107)

Phiên bản 1.3.0-alpha03

Ngày 17 tháng 12 năm 2025

Phát hành androidx.datastore:datastore-*:1.3.0-alpha03. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục vấn đề không đổi tên được tệp kho dữ liệu tạm thời. (I94f89, b/203087070)
  • Khắc phục vấn đề để ngăn chặn việc bỏ qua các bản cập nhật trong quá trình đọc/ghi đồng thời. Tình huống tương tranh có thể xảy ra giữa một trình thu thập mới trên DataStore.data và một lệnh gọi updateData đồng thời, khiến trình thu thập bỏ lỡ giá trị mới. (I6a427, b/431787506)

Phiên bản 1.3.0-alpha02

Ngày 3 tháng 12 năm 2025

Phát hành androidx.datastore:datastore-*:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.

Sửa lỗi

Phiên bản 1.3.0-alpha01

Ngày 19 tháng 11 năm 2025

Phát hành androidx.datastore:datastore-*:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm tính năng hỗ trợ KMP Web trong DataStore bằng cách sử dụng API sessionStorage. Tính năng này cho phép DataStore lưu trữ dữ liệu tạm thời trong một thẻ trình duyệt. (I60fad, b/316376114)

Phiên bản 1.2

Phiên bản 1.2.1

Ngày 11 tháng 3 năm 2026

Phát hành androidx.datastore:datastore-*:1.2.1. Phiên bản 1.2.1 bao gồm các thay đổi sau.

No changes

  • Bản phát hành này giới thiệu các bản sửa lỗi nhỏ về cơ sở hạ tầng và không bao gồm bất kỳ thay đổi nào về API hoặc hành vi của DataStore so với phiên bản 1.2.0.

Phiên bản 1.2.0

Ngày 19 tháng 11 năm 2025

Phát hành androidx.datastore:datastore-*:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Các thay đổi lớn kể từ bản phát hành 1.1.0

Hỗ trợ Java/Guava:

  • Thêm mô-đun datastore-guava mới để hiển thị các API thân thiện với người dùng Java và Guava ListenableFuture thông qua GuavaDataStore.
  • Thêm tính năng hỗ trợ đa quy trình trong GuavaDataStore.
  • Thêm một phương thức nạp chồng cho GuavaDataStore.from chấp nhận Executor Java (thay vì CoroutineContext) và sử dụng androidx.core.util.Function.

Hỗ trợ tính năng Khởi động trực tiếp:

  • Giờ đây, bạn có thể sử dụng DataStore trong chế độ Khởi động trực tiếp. Các API mới như createInDeviceProtectedStorage() trong DataStoreFactory và deviceProtectedDataStore() trong DataStoreDelegate cho phép tạo Kho lưu trữ dữ liệu trong Bộ nhớ được bảo vệ của thiết bị.

Thay đổi về bộ nhớ và API:

  • Thêm PreferencesFileSerializer triển khai androidx.datastore.core.Serializer để sử dụng với FileStorage.
  • Xác định hàm khởi tạo mặc định cho ReplaceFileCorruptionHandler để sử dụng mã chung.

Sửa lỗi:

  • Sửa lỗi java.lang.UnsatisfiedLinkError khi sử dụng DataStore trong một ứng dụng được tối ưu hoá bằng R8 nhưng không sử dụng tệp ProGuard chuẩn.
  • Khắc phục vấn đề trong đó các thao tác GuavaDataStore có thể chạy không chính xác trên luồng gọi (ví dụ: luồng chính) thay vì trình điều phối IO được chỉ định.
  • Giải quyết vấn đề FileNotFoundException trong OkioStorage khi khởi động bằng cách thêm lần thử thứ hai để đọc dữ liệu trong trường hợp xảy ra tình huống tương tranh.

Phiên bản 1.2.0-rc01

Ngày 5 tháng 11 năm 2025

Phát hành androidx.datastore:datastore-*:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.

Phiên bản 1.2.0-beta01

Ngày 22 tháng 10 năm 2025

Phát hành androidx.datastore:datastore-*:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Thay đổi về API

  • Đặt CorruptionHandler ở chế độ công khai. (I9ac35, b/452406457)
  • Sử dụng androidx.core.util.Function trong GuavaDataStore. (I71eae, b/448563999)
  • Thêm phương thức nạp chồng cho GuavaDataStore.from, nhận Executor thay vì CoroutineContext. (I989fa, b/448563183)

Sửa lỗi

  • Khắc phục java.lang.UnsatisfiedLinkError khi sử dụng DataStore trong một ứng dụng được tối ưu hoá bằng R8 nhưng không sử dụng getDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293)
  • Khắc phục vấn đề trong đó các thao tác GuavaDataStore có thể chạy không chính xác trên luồng gọi (ví dụ: luồng chính) thay vì trình điều phối IO được chỉ định. (Ic91ea,b/441801112)

Phiên bản 1.2.0-alpha02

Ngày 7 tháng 5 năm 2025

Phát hành androidx.datastore:datastore-*:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm tính năng hỗ trợ đa quy trình trong GuavaDataStore. (e0d608a).
  • Thêm một phương thức trợ giúp để tạo GuavaDataStore từ DataStore. (9af26f4)
  • Các dự án được phát hành bằng Kotlin 2.0 cần có KGP 2.0.0 trở lên để sử dụng. (Idb6b5)
  • Thay thế phương thức nạp chồng datastore hiện có bằng một phương thức uỷ quyền để khởi động DataStore dùng trong quá trình khởi động trực tiếp. (If71b9)

Phiên bản 1.2.0-alpha01

Ngày 26 tháng 3 năm 2025

Phát hành androidx.datastore:datastore-*:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm mô-đun datastore-guava để hiển thị các API thân thiện với người dùng Java và Guava ListenableFuture thông qua GuavaDataStore. (Iadd5e0)
  • Giờ đây, bạn có thể sử dụng DataStore trong chế độ DirectBoot. Để tạo một kho dữ liệu dùng trong chế độ khởi động trực tiếp, bạn phải tạo kho dữ liệu đó trong Bộ nhớ được bảo vệ của thiết bị. Bạn có thể thực hiện việc này bằng các API DataStore mới sau: createInDeviceProtectedStorage() trong DataStoreFactory và deviceProtectedDataStore() trong DataStoreDelegate. (Ib90e56)

Thay đổi về API

  • Thêm PreferencesFileSerializer triển khai giao diện androidx.datastore.core.Serializer để sử dụng với FileStorage. (I4c71f3)

Sửa lỗi

  • Đã giải quyết vấn đề FileNotFoundException trong OkioStorage khi khởi động bằng cách thêm lần thử thứ hai để đọc dữ liệu trong trường hợp xảy ra tình huống tương tranh. (I43b3fb, b/337870543)
  • Xác định hàm khởi tạo mặc định cho ReplaceFileCorruptionHandler để sử dụng mã chung. (I795b05, b/358138957)

Phiên bản 1.1

Phiên bản 1.1.7

Ngày 20 tháng 5 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.7. Phiên bản 1.1.7 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục vấn đề thiếu quy tắc Proguard trong cấu phần phần mềm Android của datastore-preferences-core. (3f3f6e, b/413078297)

Phiên bản 1.1.6

Ngày 7 tháng 5 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.6. Phiên bản 1.1.6 bao gồm các thay đổi sau.

Sửa lỗi

  • Đã giải quyết vấn đề siêu dữ liệu Gradle bị hỏng trong phiên bản 1.1.5. Vấn đề này là do một lỗi trong DSL của trình bổ trợ AGP KMP mới, khiến siêu dữ liệu cho tất cả nền tảng mục tiêu không được tự động đưa vào. Lỗi này khiến một số phương thức DataStore Android không còn xuất hiện trong bản dựng của ứng dụng khách. Cách khắc phục là sử dụng DSL android cũ hơn trong build.gradle thay vì androidLibrary. (7801abf)

Phiên bản 1.1.5

Ngày 23 tháng 4 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.5. Phiên bản 1.1.5 bao gồm các thay đổi sau.

Sửa lỗi

  • Để giảm thiểu các vấn đề về CorruptionException trong PreferencesDataStore, Bộ nhớ mặc định đã được thay đổi từ OkioStorage thành FileStorage. Thay đổi này được triển khai bằng cách giới thiệu PreferencesFileSerializer. b/346197747

Phiên bản 1.1.4

Ngày 26 tháng 3 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.4. Phiên bản 1.1.4 bao gồm các thay đổi sau.

Sửa lỗi

  • Thay thế bộ nhớ mặc định từ OkioStorage thành FileStorage để cải thiện độ tin cậy bằng cách giảm CorruptionException. (I71181, b/346197747)

Phiên bản 1.1.3

Ngày 26 tháng 2 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.3. Phiên bản 1.1.3 bao gồm các thay đổi sau.

Sửa lỗi

  • Đã giải quyết vấn đề về FileNotFoundException trong OkioStorage khi khởi động ứng dụng. Nếu lần đọc tệp đầu tiên không thành công, thì hệ thống sẽ thực hiện lần đọc thứ hai trong trường hợp xảy ra tình huống tương tranh do tệp được tạo bằng một quy trình khác trong lần đọc đầu tiên. (I43b3f, b/337870543)

Phiên bản 1.1.2

Ngày 15 tháng 1 năm 2025

Phát hành androidx.datastore:datastore-*:1.1.2. Phiên bản 1.1.2 bao gồm các thay đổi sau.

Sửa lỗi

  • Cải thiện độ trễ đọc ấm (DataStore.data.first()) gấp 8 lần. (22b8a40)
  • Bạn có thể tạo ReplaceFileCorruptionHandler từ mã chung của KMP. (7632e839)

Phiên bản 1.1.1

Ngày 1 tháng 5 năm 2024

Phát hành androidx.datastore:datastore-*:1.1.1. Phiên bản 1.1.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Giảm thiểu cảnh báo sai trên Linux về lỗi "Resource deadlock would occur" (Sẽ xảy ra lỗi tắc nghẽn tài nguyên) trong trường hợp có nhiều phiên bản DataStore cố gắng ghi từ các quy trình khác nhau bằng cách huỷ khoá tệp.

Phiên bản 1.1.0

Ngày 17 tháng 4 năm 2024

Phát hành androidx.datastore:datastore-*:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

Những thay đổi lớn kể từ bản phát hành 1.0.0

Vui lòng xem ghi chú phát hành của các phiên bản alpha và phiên bản thử nghiệm của 1.1.0 để biết thêm thông tin. Sau đây là một số nội dung cập nhật chính trong phiên bản 1.1.0:

  • DataStore hiện hỗ trợ nhiều quy trình truy cập vào cùng một tệp, đồng thời hỗ trợ khả năng ghi nhận trên nhiều quy trình.
  • Giao diện Bộ nhớ mới cho phép bạn tuỳ chỉnh cách lưu trữ hoặc chuyển đổi tuần tự các mô hình dữ liệu.
  • Giờ đây, bạn có thể sử dụng DataStore trong các dự án Kotlin Multiplatform.

Phiên bản 1.1.0-rc01

Ngày 3 tháng 4 năm 2024

Phát hành androidx.datastore:datastore-*:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục tình trạng suy giảm hiệu suất khi các lệnh gọi updateData không tối ưu hoá hoạt động ghi trên ổ đĩa nếu dữ liệu mới giống với dữ liệu cũ (d64cfb5)
  • Khắc phục tình huống tương tranh trong đó MultiProcess DataStore có thể bỏ lỡ các lần vô hiệu hoá trong quá trình khởi chạy. ((b/326141553),(094c2dd))

Phiên bản 1.1.0-beta02

Ngày 6 tháng 3 năm 2024

Phát hành androidx.datastore:datastore-*:1.1.0-beta02. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.

Sửa lỗi

  • Cải thiện hiệu suất trên DataStore chỉ thu thập thông báo cập nhật khi quan sát thấy. (b/267792241)
    • Xin lưu ý rằng thay đổi này có thể kích hoạt UncompletedCoroutinesError trong các kiểm thử của bạn nếu bạn đang sử dụng thư viện kiểm thử Coroutine. Hãy nhớ truyền TestScope.backgroundScope khi khởi chạy DataStore trong các chương trình kiểm thử để tránh vấn đề này.
  • ​Khắc phục vấn đề các lệnh gọi updateData lồng nhau trên cùng một thực thể sẽ bị tắc nghẽn. (b/241760537)
  • Đã điều chỉnh để DataStore không còn gửi IOExceptions nếu không xoá được SharedPreferences trong quá trình di chuyển. (b/195553816)
  • Khắc phục vấn đề không đổi được tên tệp trong quá trình updateData trong môi trường JVM không phải Android. (b/203087070)
  • Khắc phục vấn đề CorruptionException không được xử lý sau khi khởi chạy DataStore. (b/289582516)

Phiên bản 1.1.0-beta01

Ngày 10 tháng 1 năm 2024

androidx.datastore:datastore-*:1.1.0-beta01 được phát hành mà không có thay đổi nào kể từ 1.1.0-alpha07. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Phiên bản 1.1.0-alpha07

Ngày 29 tháng 11 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha07. Phiên bản 1.1.0-alpha07 bao gồm các thay đổi sau.

Thay đổi về API

  • Các phương thức MultiProcessDataStoreFactory không còn thử nghiệm nữa.Chú thích @ExperimentalMultiProcessDataStore đã bị xoá hoàn toàn. (Ieee54, I8e607)

Sửa lỗi

  • Triển khai việc xoá chú thích @ExperimentalMultiProcessDataStore cho phiên bản 1.1.0-alpha07. (I8e607)

Phiên bản 1.1.0-alpha06

Ngày 1 tháng 11 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Thay đổi về API

  • Phương thức nhà máy createSingleProcessCoordinator hiện nhận một đường dẫn tệp (String, java.io.File và okio.Path) để nhất quán với createMultiProcessCoordinator. (I211c8, b/305755935)

Phiên bản 1.1.0-alpha05

Ngày 6 tháng 9 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

Thay đổi về API

  • Datastore FileStorage hiện được cung cấp công khai, vì vậy, khách hàng có thể cung cấp các tham số tuỳ chỉnh. (Icb985)
  • Thay đổi hàm khởi tạo OkioStorage để chấp nhận InterProcessCoordinator để có thể sử dụng trên Android với MultiProcessCoordinator. (Iecea3)

Sửa lỗi

  • Khắc phục lỗi MultiProcessCoordinator không thể giám sát nhiều tệp trong cùng một thư mục.
  • Khắc phục lỗi không phát hiện được tệp trùng lặp nếu đường dẫn tệp không được chuẩn hoá.
  • Khắc phục các giá trị không chính xác được trả về từ RxDataStore#isDisposed.
  • Khắc phục cấu hình Proguard bị thiếu cho cấu phần phần mềm datstore-preferences-core.

Phiên bản 1.1.0-alpha04

Ngày 5 tháng 4 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Sửa lỗi

  • Cải thiện việc triển khai nội bộ để tránh tình huống tương tranh, trong đó luồng dữ liệu của DataStore có thể phát ra giá trị cũ hơn sau khi cập nhật.

Phiên bản 1.1.0-alpha03

Ngày 24 tháng 3 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha03.

Sửa lỗi

  • Xoá các quy tắc ràng buộc về phần phụ thuộc khỏi cấu phần phần mềm Maven để giải quyết vấn đề về bản dựng trong Kotlin Native Targets (b/274786186, KT-57531).

Phiên bản 1.1.0-alpha02

Ngày 22 tháng 3 năm 2023

Phát hành androidx.datastore:datastore-*:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Lưu ý

Xin lưu ý rằng phiên bản này bao gồm một bản cải tiến nội bộ quan trọng, hợp nhất các phương thức triển khai cho DataStore một quy trình và nhiều quy trình. Vui lòng theo dõi những thay đổi ngoài ý muốn có thể xảy ra đối với hành vi (ví dụ: thời gian thông báo cập nhật). Bạn có thể sử dụng thành phần trình theo dõi sự cố để báo cáo những thay đổi đó.

Tính năng mới

  • Giờ đây, bạn có thể sử dụng DataStore trong các dự án KMM. Xin lưu ý rằng các mục tiêu không phải Android của DataStore vẫn đang trong giai đoạn thử nghiệm, nhưng chúng tôi đã quyết định hợp nhất các phiên bản để nhà phát triển dễ dàng dùng thử hơn.
  • Các tính năng đa quy trình được chuyển từ androidx.datastore.multiprocess sang androidx.datastore.core.
  • Thêm một phương thức ban đầu mới trong androidx.datastore.core.MultiProcessDataStoreFactory để tạo các thực thể DataStore bằng đối tượng Storage cho các thao tác với tệp.
  • Thêm giao diện InterProcessCoordinator mới giúp nhiều thực thể DataStore giao tiếp giữa các quy trình. Xin lưu ý rằng việc triển khai Đa quy trình của InterProcessCoordinator chỉ có trên Android.

Thay đổi về API

  • Thêm InterProcessCoordinator vào StorageConnection trong giao diện datastore-core (I555bb)
  • Thay đổi các API trong MultiProcessDataStoreFactory của datastore-core để sử dụng Bộ nhớ. (Iac02f)
  • Di chuyển các API công khai trong datastore-multiprocess vào datastore-core (I76d7c)
  • Hiển thị PreferencesSerializer từ datastore-preferences-core (I4b788)
  • Thêm chú thích @JvmDefaultWithCompatibility (I8f206)

Phiên bản 1.1.0-alpha01

Ngày 9 tháng 11 năm 2022

Phát hành androidx.datastore:datastore-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ các trường hợp sử dụng gồm nhiều quy trình, trong đó đảm bảo tính nhất quán của dữ liệu giữa các thực thể DataStore trong các quy trình. Hãy thêm MultiProcessDataStoreFactory#create để tạo các thực thể DataStore như vậy.
  • Giao diện Bộ nhớ mới cho phép chuyển đổi cơ chế lưu trữ cơ bản của Datastore. Chúng tôi cung cấp các phương thức triển khai cho java.io và okio. Nhà máy DataStore có các phương thức mới chấp nhận đối tượng Bộ nhớ này.

Các thay đổi về API

  • Thay đổi các API trong MultiProcessDataStoreFactory của datastore-core để sử dụng Bộ nhớ. (Iac02f)
  • Di chuyển các API công khai trong datastore-multiprocess vào datastore-core (I76d7c)
  • Hiển thị PreferencesSerializer từ datastore-preferences-core (I4b788)

Phiên bản 1.0.0

Phiên bản 1.0.0

Ngày 4 tháng 8 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Các tính năng chính của phiên bản 1.0.0

Jetpack DataStore là một giải pháp lưu trữ dữ liệu cho phép lưu trữ các cặp khoá-giá trị hoặc đối tượng đã nhập có vùng đệm giao thức. DataStore sử dụng coroutine Kotlin và Flow để lưu trữ dữ liệu một cách không đồng bộ, nhất quán và dựa trên giao dịch.

Phiên bản 1.0.0-rc02

Ngày 21 tháng 7 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-rc02. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.

Bản sửa lỗi

  • Làm rõ rằng SharedPreferencesMigration không chạy nếu không có khoá. (Icfa32, b/192824325)
  • Sửa lỗi SharedPreferencesMigration được tạo bằng MIGRATE_ALL_KEYS sẽ xảy ra ngoại lệ nếu khoá yêu cầu chưa tồn tại. (Ie318a, b/192824325)

Phiên bản 1.0.0-rc01

Ngày 30 tháng 6 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Bản sửa lỗi

  • Khắc phục lỗi tệp .gtm vô tình được thêm vào tệp jar cuối cùng (I65d96, b/188985637)

Phiên bản 1.0.0-beta02

Ngày 16 tháng 6 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-beta02. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.

Bản sửa lỗi

Phiên bản 1.0.0-beta01

Ngày 21 tháng 4 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Bỏ JvmOverloads trong các phương thức của kotlin (I2adc7)

Bản sửa lỗi

  • Khắc phục lỗi khi uỷ quyền Datastore có thể dẫn đến rò rỉ ngữ cảnh (Ie96fc, b/184415662)

Phiên bản 1.0.0-alpha08

Ngày 10 tháng 3 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-alpha08. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.

Thay đổi API

  • Giờ đây, bạn có thể thêm quá trình di chuyển theo ngữ cảnh vào trường hợp uỷ quyền thuộc tính dataStore và preferencesDataStore. (I4ef69, b/173726702)
  • Thêm các chức năng trợ giúp để lấy tên tệp nếu bạn không còn sử dụng Delegate của DataStore hoặc context.createDataStore (I60f9a)
  • Tạm ngưng trình chuyển đổi tuần tự (Serializer) writeTo và readFrom. Nếu đã triển khai một trình chuyển đổi tuần tự, bạn cần phải cập nhật hàm thành các hàm tạm ngưng (suspend). (I1e58e)
  • Thêm thuộc tính delegate cho người dùng RxDataStore. (Ied768, b/173726702)

Bản sửa lỗi

Phiên bản 1.0.0-alpha07

Ngày 24 tháng 2 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.

Thay đổi API

  • Hàm mở rộng Context.createDataStore đã bị xoá và được thay thế bằng việc uỷ quyền thuộc tính GlobalDataStore. Gọi GlobalDataStore một lần ở cấp cao nhất trong tệp kotlin. Ví dụ:

    val Context.myDataStore by dataStore(...)
    

    Đặt phần này ở cấp cao nhất của tệp kotlin để chỉ có một thực thể duy nhất của tệp. (I57215, b/173726702)

  • Các hàm RxDataStore hiện đã có trên một lớp RxDataStore thay vì các hàm mở rộng trên DataStore. (Idccdb, b/177691248)

  • Nếu muốn dịch chuyển EncryptedSharedPreferences (hoặc khởi động trực tiếp SharedPreferences) sang DataStore thì giờ bạn có thể làm việc đó bằng hàm khởi tạo (constructor) SharedPreferencesPreferences mới. Hàm khởi tạo cho phép bạn chèn SharedPreferences. (I8e04e, b/177278510)

Bản sửa lỗi

  • DataStore hiện sẽ khai báo trường hợp ngoại lệ nếu có nhiều DataStore đang hoạt động trong cùng một tệp. Nếu lúc trước bạn không quản lý DataStore dưới dạng Singleton hoặc không đảm bảo rằng không có hai thực thể DataStore nào đang hoạt động đồng thời trong cùng một tệp, thì giờ đây, bạn có thể nhận biết các trường hợp ngoại lệ khi đọc hoặc ghi vào DataStore. Bạn có thể khắc phục các lỗi này bằng cách quản lý DataStore dưới dạng Singleton. (Ib43f4, b/177691248)
  • Khắc phục hành vi hủy khi huỷ phạm vi phương thức gọi. (I2c7b3)

Phiên bản 1.0.0-alpha06

Ngày 13 tháng 1 năm 2021

Phát hành androidx.datastore:datastore-*:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm trình bao bọc RxJava cho DataStore. Cấu phần phần mềm datastore-rxjava2/3 chứa trình bao bọc cho API DataStore chính (RxDataStore, RxDataStoreBuilder, và RxDataMigration). Các cấu phần phần mềm datastore-preferences-rxjava2/3 chứa một trình dựngđể tạo một DataStore Preferences.

Thay đổi API

  • Ẩn giao diện CorruptionHandler. Không có lý do để công khai nội dung này vì nhà máy (factory) DataStore chỉ chấp nhận một tham số ChangeFileCorruptionHandler. (I0b3b3, b/176032264)
  • Phương thức preferencesKey<T>(name: String): Key<T> đã bị xoá và thay thế bằng các phương thức cụ thể cho từng loại API được hỗ trợ, ví dụ: preferencesKey<Int>("int") hiện là intPreferencesKey("int") (Ibcfac, b/170311106)

Bản sửa lỗi

  • Chỉnh sửa tài liệu trên nhà máy DataStore mà trước đó không đề cập đến việc tệp DataStore được tạo trong thư mục con “datastore/”. (Ica222)

Phiên bản 1.0.0-alpha05

Ngày 2 tháng 12 năm 2020

Phát hành androidx.datastore:datastore-*:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Bản sửa lỗi

  • Thêm các tài liệu và trường hợp ngoại lệ tốt hơn về cách ghi đồng thời từ các DataStore. (Ia98a2, b/173522155, b/173726702)
  • Hiện tại, chúng tôi cho phép (nhưng không yêu cầu) đóng OutputStream được truyền vào Serializer.writeTo(). (I5c9bf, b/173037611)

Phiên bản 1.0.0-alpha04

Ngày 17 tháng 11 năm 2020

Phát hành androidx.datastore:datastore-*:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Bản sửa lỗi

  • Khắc phục vấn đề khi đóng gói gây ra sự cố sau đây trong DataStore Preference 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Phiên bản 1.0.0-alpha03

Ngày 11 tháng 11 năm 2020

Phát hành androidx.datastore:datastore-*:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • DataStore Preference hiện hỗ trợ truyền hai giá trị (hữu ích nếu bạn cần độ chính xác cao hơn kiểu dữ liệu float) (I5be8f, b/169471808)

Thay đổi API

  • Đã tạo ra một phần phụ thuộc Kotlin thuần tuý cho DataStore để biên dịch nhanh hơn. androidx.datastore:datastore-core chỉ chứa các API kotlin chính và androidx.datastore:datastore chứa các API phụ thuộc vào Android (bao gồm SharedPreferencesMigration và hạm khởi tạo Context.createDataStore.)(I42d75, b/168512698)
  • Chia nhỏ các mục tiêu cho DataStore preference để biên dịch kotlin nhanh hơn (Ia3c19)
  • Serializer cần một thuộc tính mới cho giá trị mặc định mà sẽ được sử dụng nếu không có dữ liệu trên đĩa. Nhờ đó, bạn có thể dễ dàng hơn trong việc triển khai các trình chuyển đổi tuần tự tuỳ chỉnh để người dùng không phải đánh dấu các luồng đầu vào rỗng (luồng đầu vào rỗng không được phân tích cú pháp bằng json).

    • Ngoài ra, hiện có một bước kiểm tra để xác nhận luồng đầu ra được gửi đến writeTo() không bị đóng và nếu bị đóng thì sẽ xảy ra ngoại lệ (I16e29)
  • Đưa hàm khởi tạo cho SharedPreferencesView thành hàm nội bộ. Ban đầu, hàm khởi tạo được công khai để cho phép thử nghiệm. Thay vào đó, các lần kiểm thử phải tạo SharedPreferencesPreferences và thử nghiệm dựa vào đó. (I93891)

Bản sửa lỗi

  • Tham số produceFile trên DataStoreFactory và PreferenceDataStoreFactory hiện là tham số cuối cùng trong danh sách, nhờ đó bạn có thể sử dụng cú pháp có lambda ở cuối. (Ibe7f1, b/169425442)
  • Tuân thủ các yêu cầu mới về API tường minh trong kotlin (I5ae1e)

Các lỗi đã biết

  • DataStore Preference gặp sự cố với java.lang.NoClassDefFoundError. (b/173036843)

Phiên bản 1.0.0-alpha02

Ngày 14 tháng 10 năm 2020

Phát hành androidx.datastore:datastore-core:1.0.0-alpha02 và androidx.datastore:datastore-preferences:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Bản sửa lỗi

  • Thêm biện pháp bảo vệ phòng trường hợp đột biến (mutation) trong datastore-core. Tình trạng đột biến làm gián đoạn việc sử dụng DataStore đối với những người sử dụng DataStore không thuộc loại proto/preference(I6aa84)
  • Thêm phương thức toString vào Preferences.kt để dễ dàng gỡ lỗi trạng thái hiện tại (I96006)
  • Thêm một ngoại lệ để bảo vệ trong trường hợp sử dụng sai DataStore.Preferences (I1134d)
  • Khắc phục lỗi khiến ứng dụng ngừng hoạt động và thoát khi khởi động (I69237, b/168580258)

Phiên bản 1.0.0-alpha01

Ngày 2 tháng 9 năm 2020

Phát hành androidx.datastore:datastore-core:1.0.0-alpha01 và androidx.datastore:datastore-preferences:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

Jetpack DataStore là một giải pháp lưu trữ dữ liệu mới và cải tiến nhằm thay thế SharedPreferences. DataStore được xây dựng dựa trên Kotlin coroutine và Kotlin flow, và có hai cách triển khai khác nhau:

  • DataStore Proto cho phép bạn lưu trữ object đã nhập (được hỗ trợ bởi bộ đệm giao thức)
  • Preference DataStore lưu trữ các cặp khoá-giá trị

Dữ liệu được lưu trữ không đồng bộ, nhất quán và có thể chia sẻ, khắc phục hầu hết các hạn chế của SharedPreferences.