Savedstate

Viết các thành phần thay thế được để lưu trạng thái giao diện người dùng khi một quy trình ngừng hoạt động và khôi phục trạng thái này khi quy trình đó bắt đầu lại.
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 2 tháng 7 năm 2025 1.3.1 - - -

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

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

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

dependencies {
    // Java language implementation
    implementation "androidx.savedstate:savedstate:1.3.1"

    // Kotlin
    implementation "androidx.savedstate:savedstate-ktx:1.3.1"
}

Kotlin

dependencies {
    // Java language implementation
    implementation("androidx.savedstate:savedstate:1.3.1")

    // Kotlin
    implementation("androidx.savedstate:savedstate-ktx:1.3.1")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.

Ý kiến 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

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.3

Phiên bản 1.3.0

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

Phát hành androidx.savedstate:savedstate-*: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

  • LocalSavedStateRegistryOwner đã được di chuyển từ giao diện người dùng Compose sang mô-đun savedstate-compose mới để có thể sử dụng các API trợ giúp dựa trên Compose bên ngoài giao diện người dùng Compose. Bạn nên luôn sử dụng thành phần này khi dùng Compose UI 1.9.0-alpha02 trở lên, nhưng thành phần này vẫn tương thích ngược để có thể dùng với mọi phiên bản Compose.
  • Các tiện ích savedstate-ktx kotlin hiện đã được chuyển sang mô-đun savedstate cơ sở.
  • Giờ đây, các thực thể SavedStateRegistryOwner được truy xuất thông qua findViewTreeSavedStateRegistryOwner có thể được phân giải thông qua các thành phần mẹ rời rạc của một khung hiển thị, chẳng hạn như ViewOverlay. Hãy xem ghi chú phát hành của core hoặc tài liệu trong ViewTree.setViewTreeDisjointParent để biết thêm thông tin về các thành phần hiển thị không liên kết.

Kotlin Multiplatform

  • Mô-đun SavedState hiện tương thích với KMP. Các nền tảng được hỗ trợ hiện bao gồm môi trường máy tính Android, iOS, Linux, Mac và JVM.
  • Giới thiệu kiểu SavedState mờ dưới dạng một lớp trừu tượng để cung cấp một cách nhất quán nhằm lưu và khôi phục trạng thái ứng dụng trong KMP. Thành phần này bao gồm SavedStateReaderSavedStateWriter để sửa đổi trạng thái cần lưu. Trên Android, SavedState là một bí danh loại cho Bundle, đảm bảo khả năng tương thích nhị phân và tạo điều kiện thuận lợi cho việc di chuyển các API hiện có sang một nhóm tài nguyên chung. Trên các nền tảng khác, SavedState là một phiên bản Map<String, Any>.

      // Create a new SavedState object using the savedState DSL:
      val savedState = savedState {
        putInt("currentPage", 1)
        putString("filter", "favorites")
      }
    
      // Read from a SavedState object
      val currentPage = savedState.read { getInt("currentPage") }
    
      // Edit an existing SavedState object
      savedState.write {
        remove("currentPage")
      }
    

Hỗ trợ chuyển đổi tuần tự KotlinX

  • SavedState hiện có hỗ trợ KotlinX Serialization. Bạn có thể chuyển đổi một lớp được chú thích bằng @Serializable thành SavedState bằng cách sử dụng các phương thức encodeToSavedStatedecodeFromSavedState. SavedState được trả về là Bundle thông thường trên Android và có thể được dùng bởi mọi API chấp nhận Bundle.

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    fun main() {
        val person = Person("John", "Doe")
        val encoded: SavedState = encodeToSavedState(person)
        val decoded: Person = decodeFromSavedState(encoded)
    }
    
  • Mặc dù hầu hết các loại (chẳng hạn như các loại nguyên thuỷ) đều được hỗ trợ trực tiếp mà không cần bất kỳ cấu hình nào, nhưng bạn có thể tìm thấy các trình chuyển đổi tuần tự bổ sung có thể dùng với @Serializable(with = ___:class) trong gói androidx.savedstate.serialization.serializers trong mô-đun savedstategói androidx.savedstate.compose.serialization.serializers trong mô-đun savedstate-compose.

  • Chúng tôi cũng đã thêm saved (một đại biểu thuộc tính từng phần) để bạn dễ dàng lưu trữ các lớp @Serializable trong SavedStateRegistryOwner (ví dụ: ComponentActivity, Fragment, v.v.) và tự động khôi phục các lớp đó trong quá trình kết thúc và tạo lại. Xin lưu ý rằng uỷ quyền saved là uỷ quyền trì hoãn và sẽ không gọi hàm lambda init hoặc lưu bất cứ nội dung nào vào SavedStateRegistry cho đến khi được truy cập.

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyActivity : ComponentActivity() {
        var person by saved { Person("John", "Doe") }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            this.person = Person("Jane", "Doe")
        }
    }
    
  • Có một uỷ quyền thuộc tính saved tương tự cho SavedStateHandle được thêm vào Lifecycle 2.9.0.

Phiên bản 1.3.0-rc01

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

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

Phiên bản 1.3.0-beta01

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

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

Thông tin cập nhật về phần phụ thuộc

  • Thư viện này hiện hướng đến cấp độ ngôn ngữ Kotlin 2.0 và yêu cầu KGP 2.0.0 trở lên. (Idb6b5)

Phiên bản 1.3.0-alpha11

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

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

Phiên bản 1.3.0-alpha10

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

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

Tính năng mới

  • Thêm các biến thể phương thức không được cụ thể hoá cho các tập hợp get trong SavedStateReader. (I0b641, b/399820614)
  • Thêm encodeDefaults vào SavedStateConfiguration, cho phép tuỳ chỉnh xem các thuộc tính có giá trị mặc định có nên được mã hoá hay không. (I893cc, b/395104517)
  • Thêm SnapshotStateMapSerializer để hỗ trợ mutableStateMapOf. (Ie6f19, b/378895074)
  • Thêm SnapshotStateListSerializer để hỗ trợ mutableStateListOf. (I4d888, b/378895074)
  • Thêm các phương thức thay thế getOrNull cho các biến thể SavedStateReader.get. Các phương thức này sẽ tự động đóng gói các giá trị nguyên thuỷ. (I6228c, b/399820614)

Thay đổi về API

  • Xoá getOrElse khỏi SavedStateReader để thay bằng getOrNull() ?: else(). (I87317, b/399820614)
  • Xoá đối tượng sửa đổi inline khỏi các phương thức SavedStateReaderSavedStateWriter. (If2a02, b/399820614)
  • Xoá các trình chuyển đổi tuần tự List và Array dành riêng cho Android khỏi API công khai (Ida293)
  • Thay thế SparseParcelableArraySerializer bằng SparseArraySerializer (I91de8)
  • Đảm bảo tất cả SavedStateReader.get hoạt động nhất quán bằng cách truyền khi kiểu giá trị không khớp với kiểu trả về (I78c4a, b/399317598)
  • Đổi tên SavedState*Delegates thành SavedState*Delegate. (I8589b, b/399629301)
  • Đổi tên SavedStateConfig thành SavedStateConfiguration. (I043a5, b/399629301)

Phiên bản 1.3.0-alpha09

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

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

Tính năng mới

  • Thêm phương án dự phòng cho các loại tích hợp sẵn, đảm bảo rằng tất cả các loại mà Bundle hỗ trợ đều có thể dùng với encodeAsSavedState/decodeFromSavedState theo mặc định hoặc đối với các thuộc tính trong lớp @Serializable, thông qua chú thích @Contextual. (Ic01d2)
  • Hỗ trợ classDiscriminatorclassDiscriminatorMode trên SavedStateConfig. (I69b66, b/395104517)

Thay đổi về API

  • Thêm tham số SavedStateConfig vào các uỷ quyền saved() (I39b3a)
  • Tạo các đối tượng singleton của trình chuyển đổi tuần tự tích hợp (Ifeee4)
  • Các thuộc tính SavedStateConfig hiện ở chế độ công khai, cho phép các mô-đun khác sử dụng những cấu hình này. (Ie5f49, b/378897438)
  • Hỗ trợ @Serializer(with = ...) cho MutableStateFlowSerializerMutableStateSerializer (I90953)
  • Thêm contentDeepToString vào SavedStateReader (I14d10)

Phiên bản 1.3.0-alpha08

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

Phát hành androidx.savedstate:savedstate-*: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

  • Di chuyển MutableStateSerializer sang savedstate-compose từ lifecycle-viewmodel-compose, cho phép bạn sử dụng SavedState Serialization API với MutableState của Compose. (I4f690, b/378895074)

Thay đổi về API

  • Thêm một hàm nhà máy để tạo SavedState từ SavedState hiện có. (I39f9a)
  • Thêm tính năng hỗ trợ cho Array<SavedState>List<SavedState> trong androidx.savedstate. (Idd8a5)
  • Thêm tham số không bắt buộc SavedStateConfig vào quá trình mã hoá/giải mã SavedState (I6c4c0)

Phiên bản 1.3.0-alpha07

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

Phát hành androidx.savedstate:savedstate-*: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

  • Thêm MutableStateFlowSerializer để chuyển đổi kotlinx.coroutines.flow.MutableStateFlow thành chuỗi. (I6a892, b/378895070)

Thay đổi về API

  • Thay thế các hàm uỷ quyền SavedStateRegistryOwner.saved() được nạp chồng bằng các tham số mặc định (Icd1c1)
  • Tạo JavaSerializableSerializerParcelableSerializer trừu tượng (I268f6)
  • Xoá T : CharSequence chung khỏi CharSequenceSerializer (Ib40bd)

Phiên bản 1.3.0-alpha06

Ngày 11 tháng 12 năm 2024

Phát hành androidx.savedstate:savedstate-*: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

  • SavedState KMP hiện hỗ trợ: IBinder, Size, SizeF, Array<Parcelable>, SparseArray<Parcelable> và Serializable (Android). (I1ba94, b/334076622)
  • Thêm các thực thể KSerializer có thể dùng để mã hoá/giải mã các loại Java và Android mà Bundle hỗ trợ bằng cách đánh dấu trường có liên quan trong lớp bằng @Serializable(with = ParcelableSerializer::class). (I8c10f, I28caf, b/376026712)
  • Giờ đây, các thực thể SavedStateRegistryOwner được truy xuất thông qua findViewTreeSavedStateRegistryOwner có thể được phân giải thông qua các thành phần mẹ rời rạc của một khung hiển thị, chẳng hạn như ViewOverlay. Hãy xem ghi chú phát hành của core hoặc tài liệu trong ViewTree.setViewTreeDisjointParent để biết thêm thông tin về các thành phần hiển thị không liên kết. (Iccb33)

Thay đổi về API

  • Đặt tên và sắp xếp các gói nhất quán hơn với SavedStateRegistryOwnerDelegate (I8c135, b/376026744)

Phiên bản 1.3.0-alpha05

Ngày 13 tháng 11 năm 2024

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

Hỗ trợ chuyển đổi tuần tự KotlinX

  • SavedState hiện có hỗ trợ KotlinX Serialization. Bạn có thể chuyển đổi một lớp được chú thích bằng @Serializable thành SavedState bằng cách sử dụng các phương thức encodeToSavedStatedecodeFromSavedState. SavedState được trả về là Bundle thông thường trên Android và có thể được dùng bởi mọi API chấp nhận Bundle. (I6f59f, b/374102924)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    fun main() {
        val person = Person("John", "Doe")
        val encoded: SavedState = encodeToSavedState(person)
        val decoded: Person = decodeFromSavedState(encoded)
    }
    
  • Chúng tôi cũng đã thêm saved (một đại biểu thuộc tính từng phần) để bạn dễ dàng lưu trữ các lớp @Serializable trong SavedStateRegistryOwner (ví dụ: ComponentActivity, Fragment, v.v.) và tự động khôi phục các lớp đó trong quá trình kết thúc và tạo lại. Xin lưu ý rằng uỷ quyền saved là uỷ quyền trì hoãn và sẽ không gọi hàm lambda init hoặc lưu bất cứ nội dung nào vào SavedStateRegistry cho đến khi được truy cập. (I66739, b/376027806)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyActivity : ComponentActivity() {
        var person by saved { Person("John", "Doe") }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            this.person = Person("Jane", "Doe")
        }
    }
    
  • Có một uỷ quyền thuộc tính saved tương tự cho SavedStateHandle được thêm vào Lifecycle 2.9.0-alpha07.

Thay đổi về API

  • Thêm toMap vào SavedState, cho phép chuyển đổi mọi SavedState thành Map thông thường (bản sao nông). (I487b9, b/334076622)
  • SavedState KMP hiện hỗ trợ các mảng. (Ic0552, b/334076622)

Phiên bản 1.3.0-alpha04

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

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

Thay đổi về API

Phiên bản 1.3.0-alpha03

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

Phát hành androidx.savedstate:savedstate-*:1.3.0-alpha03 mà không có thay đổi đáng kể nào. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.

Phiên bản 1.3.0-alpha02

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

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

Kotlin Multiplatform

  • Mô-đun SavedState hiện tương thích với KMP. Các nền tảng được hỗ trợ hiện bao gồm môi trường máy tính Android, iOS, Linux, Mac và JVM. (I26305, b/334076622)

Tính năng mới

  • Giới thiệu kiểu SavedState mờ dưới dạng một lớp trừu tượng để cung cấp một cách nhất quán nhằm lưu và khôi phục trạng thái ứng dụng trong KMP. Thành phần này bao gồm SavedStateReaderSavedStateWriter để sửa đổi trạng thái cần lưu. Trên Android, SavedState là một bí danh loại cho Bundle, đảm bảo khả năng tương thích nhị phân và tạo điều kiện thuận lợi cho việc di chuyển các API hiện có sang một nhóm tài nguyên chung. Trên các nền tảng khác, SavedState là một phiên bản Map<String, Any>. (I18575, b/334076622)
  // Create a new SavedState object using the savedState DSL:
  val savedState = savedState {
    putInt("currentPage", 1)
    putString("filter", "favorites")
  }

  // Read from a SavedState object
  val currentPage = savedState.read { getInt("currentPage") }

  // Edit an existing SavedState object
  savedState.write {
    remove("currentPage")
  }

Thay đổi về API

  • SavedStateRegistrySavedStateRegistryController hiện tương thích với KMP. (Id7bb8, b/334076622)
  • SavedState, SavedStateWriterSavedStateReader hiện tương thích với KMP. (I26305, b/334076622)

Phiên bản 1.3.0-alpha01

Ngày 7 tháng 8 năm 2024

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

Thay đổi về API

  • Các tiện ích savedstate-ktx kotlin hiện đã được chuyển sang mô-đun savedstate cơ sở. (I1cc18, b/274803094)

Lưu ý

  • Cập nhật compileSdk thành 35 (5dc41be)

Phiên bản 1.2.1

Phiên bản 1.2.1

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

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

Thông tin cập nhật về phần phụ thuộc

Phiên bản 1.2.0

Phiên bản 1.2.0

Ngày 29 tháng 6 năm 2022

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

Thay đổi quan trọng kể từ phiên bản 1.1.0

  • SavedStateRegistryController nay cho phép sớm đính kèm SavedStateRegistry thông qua performAttach().
  • Giờ đây, bạn có thể truy xuất SavedStateProvider được đăng ký trước đó từ SavedStateRegistry qua getSavedStateProvider().
  • Thư viện SavedState đã được viết lại bằng Kotlin.
    • Đối với SavedStateRegistryOwner, đây là một thay đổi không tương thích với nguồn cho các lớp được viết bằng Kotlin – giờ đây, bạn phải ghi đè thuộc tính savedStateRegistry thay vì triển khai hàm getSavedStateRegistry() trước đó.
    • Đối với ViewTreeSavedStateRegistryOwner, đây là một thay đổi không tương thích với nguồn cho các lớp được viết bằng Kotlin – giờ đây, bạn phải nhập trực tiếp và sử dụng phương thức mở rộng Kotlin trên View của androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwner để đặt và tìm chủ sở hữu đã đặt trước đó. Thao tác này sẽ thay thế API savedstate-ktx của findViewTreeSavedStateRegistryOwner.

Thay đổi về hành vi

  • SavedStateRegistry không thể lưu Gói (Bundle) rỗng nữa nếu không có trạng thái lưu.

Phiên bản 1.2.0-rc01

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

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

Thay đổi về tài liệu

  • Kdocs SavedStateRegistryOwner đã được cập nhật để làm rõ trách nhiệm và hợp đồng của chủ sở hữu về cách triển khai giao diện cũng như thời điểm họ nên gọi các phương thức trên SavedStateRegistryController. (Iefc95, b/228887344)

Phiên bản 1.2.0-beta01

Ngày 20 tháng 4 năm 2022

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

Thay đổi API

  • Các lớp SavedStateRegistryViewTreeSavedStateRegistryOwner đã được viết lại trong Kotlin. Đối với ViewTreeSavedStateRegistryOwner, đây là thay đổi không tương thích nguồn đối với các lớp được viết bằng Kotlin – bạn phải nhập trực tiếp và sử dụng phương thức mở rộng Kotlin trên View của androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwner để đặt và tìm chủ sở hữu đã đặt trước đó. Thao tác này sẽ thay thế API savedstate-ktx của findViewTreeSavedStateRegistryOwner. Tệp này tương thích với tệp nhị phân và vẫn tương thích với nguồn triển khai bằng ngôn ngữ lập trình Java. (b/220191285)

Version 1.2.0-alpha02

Ngày 6 tháng 4 năm 2022

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

Tính năng mới

  • Giờ đây, bạn có thể truy xuất SavedStateProvider được đăng ký trước đó từ SavedStateRegistry qua getSavedStateProvider(). (I7ea47, b/215406268)

Thay đổi API

  • Các lớp SavedStateRegistryOwner, SavedStateRegistryControllerRecreator đã được viết lại trong Kotlin. Đối với SavedStateRegistryOwner, đây là một thay đổi không tương thích với nguồn cho các lớp được viết bằng Kotlin – giờ đây, bạn phải ghi đè thuộc tính savedStateRegistry thay vì triển khai hàm getSavedStateRegistry() trước đó. Tệp này tương thích với tệp nhị phân và tương thích với nguồn để triển khai bằng ngôn ngữ lập trình Java. (b/220191285)

Phiên bản 1.2.0-alpha01

Ngày 26 tháng 1 năm 2022

Phát hành androidx.savedstate:savedstate:1.2.0-alpha01androidx.savedstate:savedstate-ktx: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

  • SavedStateRegistryController nay cho phép sớm đính kèm tệp tin SavedStateRegistry thông qua phương thức performAttach(). (Ice4bf)

Thay đổi về hành vi

  • SavedStateRegistry không thể lưu Gói (Bundle) rỗng nữa nếu không có trạng thái lưu. (aosp/1896865, b/203457956)

Phiên bản 1.1.0

Phiên bản 1.1.0

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

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

Thay đổi lớn kể từ phiên bản 1.0.0

  • API ViewTreeSavedStateRegistryOwner: API ViewTreeSavedStateRegistryOwner.get(View) mới cho phép bạn truy xuất vào SavedStateRegistry chứa một thực thể View. Bạn cần nâng cấp lên Activity 1.2.0, Fragment 1.3.0AppCompat 1.3.0-alpha01 trở lên để điền chính xác thông tin này.
  • Cấu phần phần mềm savedstate-ktx: Thêm cấu phần phần mềm savedstate-ktx cùng với một tiện ích Kotlin findViewTreeSavedStateRegistryOwner() để làm việc với ViewTreeSavedStateRegistryOwner.

Phiên bản 1.1.0-rc01

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

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

Phiên bản 1.1.0-beta01

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

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

Phiên bản 1.1.0-alpha01

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

Phát hành androidx.savedstate:savedstate:1.1.0-alpha01androidx.savedstate:savedstate-ktx: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

  • API ViewTreeSavedStateRegistryOwner.get(View) mới cho phép bạn truy xuất vào SavedStateRegistry chứa một thực thể View. Bạn cần nâng cấp lên Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05AppCompat 1.3.0-alpha01 trở lên để điền chính xác thông tin này. (aosp/1298679)
  • Thêm cấu phần phần mềm savedstate-ktx mới cùng với một tiện ích Kotlin findViewTreeSavedStateRegistryOwner() để làm việc với ViewTreeSavedStateRegistryOwner. (aosp/1299434)

Phiên bản 1.0.0

Phiên bản 1.0.0

Ngày 5 tháng 9 năm 2019

Phát hành androidx.savedstate:savedstate:1.0.0. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng chính của phiên bản SavedState 1.0.0

androidx.savedstate chuyển dần lên bản phát hành ổn định. Đây là một nhóm các API cho phép các nhà phát triển thêm các thành phần của trình bổ trợ vào xử lý khôi phục/saveInstanceState. Điểm truy cập chính của API là SavedStateRegistry, cung cấp cách truy xuất các trạng thái đã lưu trước đó bằng cách sử dụng consumeRestoredStateForKey và đăng ký một hàm gọi lại (callback) đến registerSavedStateProvider để cung cấp savedstate khi hệ thống yêu cầu.

Phiên bản 1.0.0-rc01

Ngày 2 tháng 7 năm 2019

Phát hành androidx.savedstate:savedstate:1.0.0-rc01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Sửa lỗi

  • Đã sửa quy tắc Proguard chưa chính xác (b/132655499)

Phiên bản 1.0.0-beta01

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

Phát hành androidx.savedstate:savedstate:1.0.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Phiên bản 1.0.0-alpha02

Ngày 13 tháng 3 năm 2019

Phát hành androidx.savedstate:savedstate:1.0.0-alpha02. androidx.savedstate:savedstate gộp các cấu phần phần mềm androidx.savedstate:savedstate-bundle cùng với androidx.savedstate:savedstate-common thành một cấu phần phần mềm nhằm đơn giản hoá cơ sở hạ tầng của savedstate và xoá các phần chung khỏi SavedStateRegistry. Do đó, bạn không cần tách riêng các mô-đun.

Bạn có thể xem danh sách đầy đủ các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Thêm SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz ). Khởi tạo lớp có sẵn được khởi tạo và chạy phương thức AutoRecreated.onRecreated khi thành phần thuộc sở hữu khởi động lại.

Thay đổi về API

  • Xoá bỏ các phần chung SavedStateRegistry<T>
  • Lớp AbstractSavedStateRegistry và BundlableSavedStateRegistry đã bị xoá, hãy thay thế bằng lớp SavedStateRegistry
  • BundleSavedStateRegistryOwner được đổi tên thành SavedStateRegistryOwner.

Phiên bản 1.0.0-alpha01

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

Đây là bản phát hành đầu tiên của SavedState.

Tính năng mới

androidx.savedstate là một nhóm các API cho phép các nhà phát triển thêm các thành phần của trình bổ trợ vào xử lý khôi phục/saveInstanceState. Điểm truy cập chính của API là SavedStateRegistry<T>, cung cấp cách truy xuất trạng thái đã lưu trước đó thông qua consumeRestoredStateForKey và đăng ký hàm gọi lại đến registerSavedStateProvider để cung cấp một savedstate khi hệ thống yêu cầu.