Savedstate
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 11 tháng 12 năm 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
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.2.1" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.2.1" }
Kotlin
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.2.1") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.2.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.
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-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, bạn có thể phân giải các thực thể
SavedStateRegistryOwner
được truy xuất quafindViewTreeSavedStateRegistryOwner
thông qua các thành phần mẹ không liên kết của một thành phần 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 trongViewTree.setViewTreeDisjointParent
để biết thêm thông tin về thành phần hiển thị mẹ không liên kết. (Iccb33)
Thay đổi về API
- Giúp việc đặt tên và sắp xếp 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 hỗ trợ tính năng chuyển đổi tuần tự KotlinX. Bạn có thể chuyển đổi một lớp được chú thích bằng@Serializable
thànhSavedState
bằng cách sử dụng các phương thứcencodeToSavedState
vàdecodeFromSavedState
.SavedState
được trả về là mộtBundle
thông thường trên Android và có thể được sử dụng bởi mọi API chấp nhậnBundle
. (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 đã đưa vào
saved
, một trình uỷ quyền thuộc tính tải lười, để dễ dàng lưu trữ các lớp@Serializable
trongSavedStateRegistryOwner
(ví dụ:ComponentActivity
,Fragment
, v.v.) và tự động khôi phục các lớp đó trong quá trình ngừng hoạt động và tạo lại quy trình. Xin lưu ý rằng đối tượng uỷ quyềnsaved
là lazy và sẽ không gọi hàm lambdainit
hoặc lưu bất kỳ nội dung nào vàoSavedStateRegistry
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 thuộc tính uỷ quyền
saved
tương tự choSavedStateHandle
được thêm vào Vòng đời2.9.0-alpha07
.
Thay đổi về API
- Thêm
toMap
vàoSavedState
, cho phép chuyển đổi bất kỳSavedState
nào thànhMap
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
- SavedState KMP hiện hỗ trợ Char. (I9ac2f, b/334076622)
- Thêm
putNull
vàisNull
vào SavedState KMP. (Iea71d, b/334076622) - Thêm các tham số nhà máy
savedState
bổ sung hỗ trợMap<String, Any>
ban đầu (I9b37d, b/334076622) - SavedState KMP hiện hỗ trợ so sánh
contentDeepEquals
. (Ia515c, b/334076622) - SavedState KMP hiện hỗ trợ Long. (I4c180, b/334076622)
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 Android, iOS, Linux, Mac và môi trường máy tính để bàn JVM. (I26305, b/334076622)
Tính năng mới
- Giới thiệu loại mờ
SavedState
dưới dạng một bản tóm tắt để cung cấp cách nhất quán để lưu và khôi phục trạng thái ứng dụng trong KMP. Tệp này bao gồmSavedStateReader
vàSavedStateWriter
để sửa đổi trạng thái cần lưu. Trên Android,SavedState
là bí danh loại choBundle
, đảm bảo khả năng tương thích nhị phân và tạo điều kiện 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 thực thể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
SavedStateRegistry
vàSavedStateRegistryController
hiện đã tương thích với KMP. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
vàSavedStateReader
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-alpha01
và androidx.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 kotlin
savedstate-ktx
hiện đã được chuyển sang mô-đun savedstate cơ sở. (I1cc18, b/274803094)
Lưu ý
- Cập nhật
compileSdk
lên 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.1
và androidx.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
SavedState
hiện phụ thuộc vào Vòng đời2.6.1
. (c1f621)
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.0
và androidx.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èmSavedStateRegistry
thông quaperformAttach()
.- Giờ đây, bạn có thể truy xuất
SavedStateProvider
được đăng ký trước đó từSavedStateRegistry
quagetSavedStateProvider()
. - 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ínhsavedStateRegistry
thay vì triển khai hàmgetSavedStateRegistry()
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ênView
củaandroidx.savedstate.setViewTreeSavedStateRegistryOwner
vàandroidx.savedstate.findViewTreeSavedStateRegistryOwner
để đặt và tìm chủ sở hữu đã đặt trước đó. Thao tác này sẽ thay thế APIsavedstate-ktx
củafindViewTreeSavedStateRegistryOwner
.
- Đối với
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-rc01
và androidx.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ênSavedStateRegistryController
. (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-beta01
và androidx.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
SavedStateRegistry
vàViewTreeSavedStateRegistryOwner
đã được viết lại trong Kotlin. Đối vớiViewTreeSavedStateRegistryOwner
, đâ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ênView
củaandroidx.savedstate.setViewTreeSavedStateRegistryOwner
vàandroidx.savedstate.findViewTreeSavedStateRegistryOwner
để đặt và tìm chủ sở hữu đã đặt trước đó. Thao tác này sẽ thay thế APIsavedstate-ktx
củafindViewTreeSavedStateRegistryOwner
. 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-alpha02
và androidx.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
quagetSavedStateProvider()
. (I7ea47, b/215406268)
Thay đổi API
- Các lớp
SavedStateRegistryOwner
,SavedStateRegistryController
vàRecreator
đã được viết lại trong Kotlin. Đối vớiSavedStateRegistryOwner
, đâ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ínhsavedStateRegistry
thay vì triển khai hàmgetSavedStateRegistry()
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-alpha01
và androidx.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 tinSavedStateRegistry
thông qua phương thứcperformAttach()
. (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.0
và androidx.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
: APIViewTreeSavedStateRegistryOwner.get(View)
mới cho phép bạn truy xuất vàoSavedStateRegistry
chứa một thực thểView
. Bạn cần nâng cấp lên Activity1.2.0
, Fragment1.3.0
và AppCompat1.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ềmsavedstate-ktx
cùng với một tiện ích KotlinfindViewTreeSavedStateRegistryOwner()
để làm việc vớiViewTreeSavedStateRegistryOwner
.
Phiên bản 1.1.0-rc01
Ngày 16 tháng 12 năm 2020
androidx.savedstate:savedstate:1.1.0-rc01
và androidx.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-beta01
và androidx.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-alpha01
và androidx.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àoSavedStateRegistry
chứa một thực thểView
. Bạn cần nâng cấp lên Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
và AppCompat1.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 KotlinfindViewTreeSavedStateRegistryOwner()
để làm việc vớiViewTreeSavedStateRegistryOwner
. (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ứcAutoRecreated.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ànhSavedStateRegistryOwner
.
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.