Savedstate
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 22 ตุลาคม 2025 | 1.3.3 | 1.4.0-rc01 | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน SavedState คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงใน โปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
Groovy
dependencies { // Java language implementation implementation "androidx.savedstate:savedstate:1.3.3" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.3.3" }
Kotlin
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.3.3") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.3.3") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.4
เวอร์ชัน 1.4.0-rc01
22 ตุลาคม 2025
androidx.savedstate:savedstate-*:1.4.0-rc01 เปิดตัวโดยไม่มีการเปลี่ยนแปลงใดๆ ตั้งแต่ 1.4.0-beta01 เวอร์ชัน 1.4.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.4.0-beta01
8 ตุลาคม 2025
androidx.savedstate:savedstate-*:1.4.0-beta01 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญนับตั้งแต่เวอร์ชันอัลฟ่าล่าสุด เวอร์ชัน 1.4.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.4.0-alpha03
27 สิงหาคม 2025
androidx.savedstate:savedstate-*:1.4.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับประเภทที่กำหนดให้เป็น Null ได้ใน
encodeToSavedStateและdecodeFromSavedState(I79062, b/439527454) - อัปเดต Compose เป็น 1.9.0 (I2b9de)
เวอร์ชัน 1.4.0-alpha02
13 สิงหาคม 2025
androidx.savedstate:savedstate-*:1.4.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.0-alpha01
30 กรกฎาคม 2025
androidx.savedstate:savedstate-*:1.4.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการรองรับประเภทที่กำหนดให้เป็น Null ได้ใน
SavedStateRegistryOwner.savedเพื่อให้การบันทึกและกู้คืนพร็อพเพอร์ตี้ที่กำหนดให้เป็น Null ได้ง่ายขึ้น (Ia632, b/421325690)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.3
17 กันยายน 2025
androidx.savedstate:savedstate-*:1.3.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.3 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดเกี่ยวกับปลั๊กอิน Compose Compiler ที่ไม่ได้ใช้ซึ่งทำให้
SavedStateอาร์ติแฟกต์ KMP เสียหาย (Id2290, b/443965665)
เวอร์ชัน 1.3.2
27 สิงหาคม 2025
androidx.savedstate:savedstate-*:1.3.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.2 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มเป้าหมาย Kotlin Multiplatform (KMP) ใหม่ลงในอาร์ติแฟกต์ SavedState
*-composeตอนนี้ Lifecycle รองรับแพลตฟอร์มต่อไปนี้ทั้งหมดแล้ว ได้แก่ JVM (Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, macOS, MinGW) และ Web (JavaScript, WasmJS) (/Idcf26)
เวอร์ชัน 1.3.1
16 กรกฎาคม 2025
androidx.savedstate:savedstate-*:1.3.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.1 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- เพิ่มเป้าหมาย KMP ทั้งหมดที่คำอธิบายประกอบรองรับลงในอาร์ติแฟกต์
SavedState - เพิ่มเป้าหมาย Kotlin Multiplatform (KMP) ใหม่ลงในอาร์ติแฟกต์
SavedStateSavedStateตอนนี้รองรับแพลตฟอร์มต่อไปนี้ทั้งหมดแล้ว ได้แก่ JVM (Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, macOS, MinGW) และเว็บ (JavaScript, WasmJS) โปรดทราบว่าเราไม่ได้เพิ่มเป้าหมาย KMP ใหม่ลงในอาร์ติแฟกต์*-composeเนื่องจากขึ้นอยู่กับการเผยแพร่ Compose 1.9 เวอร์ชันเสถียร (I062f4)
เวอร์ชัน 1.3.0
7 พฤษภาคม 2025
androidx.savedstate:savedstate-*:1.3.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
LocalSavedStateRegistryOwnerได้ย้ายจาก Compose UI ไปยังโมดูลsavedstate-composeใหม่เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ควรใช้เสมอเมื่อใช้ Compose UI1.9.0-alpha02ขึ้นไป แต่จะเข้ากันได้แบบย้อนหลังเพื่อให้ใช้กับ Compose ทุกเวอร์ชันได้- ตอนนี้เราได้ย้าย
savedstate-ktxส่วนขยาย Kotlin ไปยังโมดูล base savedstate แล้ว - ตอนนี้คุณสามารถแก้ไขอินสแตนซ์
SavedStateRegistryOwnerที่ดึงข้อมูลผ่านfindViewTreeSavedStateRegistryOwnerได้แล้วผ่านผู้ปกครองที่แยกกันของมุมมอง เช่นViewOverlayดูข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักหรือเอกสารประกอบในViewTree.setViewTreeDisjointParentสำหรับข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักของมุมมองที่แยกกัน
Kotlin Multiplatform
- ตอนนี้โมดูล
SavedStateใช้ได้กับ KMP แล้ว ตอนนี้แพลตฟอร์มที่รองรับรวมถึงสภาพแวดล้อมบนเดสก์ท็อป Android, iOS, Linux, Mac และ JVM เปิดตัว
SavedStateประเภทที่ทึบแสงเป็นนามธรรมเพื่อให้วิธีที่สอดคล้องกันในการบันทึกและกู้คืนสถานะแอปพลิเคชันใน KMP ซึ่งมีSavedStateReaderและSavedStateWriterสำหรับแก้ไขสถานะที่จะบันทึก ใน AndroidSavedStateเป็นนามแฝงประเภทสำหรับBundleซึ่งช่วยให้มั่นใจได้ถึงความเข้ากันได้แบบไบนารีและอำนวยความสะดวกในการย้ายข้อมูล API ที่มีอยู่ไปยังชุดแหล่งที่มาทั่วไป ในแพลตฟอร์มอื่นๆSavedStateคืออินสแตนซ์ของ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") }
การรองรับ KotlinX Serialization
SavedStateตอนนี้รองรับการซีเรียลไลซ์ KotlinX แล้ว คุณสามารถแปลงคลาสที่ใส่คำอธิบายประกอบด้วย@Serializableเป็นSavedStateได้โดยใช้วิธีการencodeToSavedStateและdecodeFromSavedStateSavedStateที่ส่งคืนคือBundleปกติใน Android และ API ใดก็ตามที่ยอมรับ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) }แม้ว่าระบบจะรองรับประเภทส่วนใหญ่ (เช่น ประเภทดั้งเดิม) โดยตรงโดยไม่ต้องกำหนดค่าใดๆ แต่คุณจะพบ Serializer เพิ่มเติมที่ใช้กับ
@Serializable(with = ___:class)ได้ในแพ็กเกจandroidx.savedstate.serialization.serializersในโมดูลsavedstateและแพ็กเกจandroidx.savedstate.compose.serialization.serializersในโมดูลsavedstate-composeนอกจากนี้ เรายังมี
savedซึ่งเป็นตัวแทนพร็อพเพอร์ตี้แบบเลซี เพื่อให้จัดเก็บคลาส@SerializableในSavedStateRegistryOwnerได้ง่าย (เช่นComponentActivity,Fragmentฯลฯ) และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดและสร้างใหม่ โปรดทราบว่าsaveddelegate จะทำงานแบบเลซี่และจะไม่เรียกใช้initLambda หรือบันทึกสิ่งใดลงในSavedStateRegistryจนกว่าจะมีการเข้าถึง@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") } }มีผู้แทนพร็อพเพอร์ตี้
savedที่คล้ายกันสำหรับSavedStateHandleซึ่งเพิ่มในวงจร2.9.0
เวอร์ชัน 1.3.0-rc01
23 เมษายน 2025
androidx.savedstate:savedstate-*:1.3.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.3.0-beta01
9 เมษายน 2025
androidx.savedstate:savedstate-*:1.3.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ไลบรารีนี้กำหนดเป้าหมายเป็นระดับภาษา Kotlin 2.0 และต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
เวอร์ชัน 1.3.0-alpha11
26 มีนาคม 2025
androidx.savedstate:savedstate-*:1.3.0-alpha11 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญต่อสาธารณะ เวอร์ชัน 1.3.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.3.0-alpha10
12 มีนาคม 2025
androidx.savedstate:savedstate-*:1.3.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha10 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มตัวแปรเมธอดที่ไม่ใช่แบบเรียลไทม์สำหรับคอลเล็กชัน
getในSavedStateReader(I0b641, b/399820614) - เพิ่ม
encodeDefaultsลงในSavedStateConfigurationเพื่อให้ปรับแต่งได้ว่าจะเข้ารหัสพร็อพเพอร์ตี้ที่มีค่าเริ่มต้นหรือไม่ (I893cc, b/395104517) - เพิ่ม
SnapshotStateMapSerializerเพื่อรองรับmutableStateMapOf(Ie6f19, b/378895074) - เพิ่ม
SnapshotStateListSerializerเพื่อรองรับmutableStateListOf(I4d888, b/378895074) - เพิ่ม
getOrNullวิธีการอื่นสำหรับตัวแปรSavedStateReader.getซึ่งจะแปลงค่าดั้งเดิมเป็นออบเจ็กต์โดยอัตโนมัติ (I6228c, b/399820614)
การเปลี่ยนแปลง API
- นำ
getOrElseออกจากSavedStateReaderเพื่อใช้getOrNull() ?: else()แทน (I87317, b/399820614) - นำตัวแก้ไข
inlineออกจากเมธอดSavedStateReaderและSavedStateWriter(If2a02, b/399820614) - นำ List และ Array Serializer ที่เฉพาะเจาะจงของ Android ในตัวออกจาก API สาธารณะ (Ida293)
- แทนที่
SparseParcelableArraySerializerด้วยSparseArraySerializer(I91de8) - ทำให้
SavedStateReader.getทั้งหมดทำงานอย่างสอดคล้องกันโดยการส่งข้อผิดพลาดเมื่อประเภทค่าไม่ตรงกับประเภทการคืนค่า (I78c4a, b/399317598) - เปลี่ยนชื่อ
SavedState*Delegatesเป็นSavedState*Delegate(I8589b, b/399629301) - เปลี่ยนชื่อ
SavedStateConfigเป็นSavedStateConfiguration(I043a5, b/399629301)
เวอร์ชัน 1.3.0-alpha09
26 กุมภาพันธ์ 2025
androidx.savedstate:savedstate-*:1.3.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการสำรองสำหรับประเภทที่มีอยู่เพื่อให้มั่นใจว่าประเภททั้งหมดที่
Bundleรองรับจะใช้กับencodeAsSavedState/decodeFromSavedStateได้โดยค่าเริ่มต้น หรือสำหรับพร็อพเพอร์ตี้ในคลาส@Serializableจะใช้ผ่านคำอธิบายประกอบ@Contextualได้ (Ic01d2) - รวมถึงรองรับ
classDiscriminatorและclassDiscriminatorModeในSavedStateConfig(I69b66, b/395104517)
การเปลี่ยนแปลง API
- เพิ่มพารามิเตอร์
SavedStateConfigให้กับผู้รับมอบสิทธิ์saved()(I39b3a) - สร้างออบเจ็กต์ Singleton ของ Serializer ในตัว (Ifeee4)
- ตอนนี้พร็อพเพอร์ตี้
SavedStateConfigเป็นแบบสาธารณะแล้ว ซึ่งช่วยให้โมดูลอื่นๆ ใช้การกำหนดค่าเหล่านี้ได้ (Ie5f49, b/378897438) - การสนับสนุน
@Serializer(with = ...)สำหรับMutableStateFlowSerializerและMutableStateSerializer(I90953) - เพิ่ม
contentDeepToStringลงในSavedStateReader(I14d10)
เวอร์ชัน 1.3.0-alpha08
12 กุมภาพันธ์ 2025
androidx.savedstate:savedstate-*:1.3.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- ย้าย
MutableStateSerializerไปยังsavedstate-composeจากlifecycle-viewmodel-composeเพื่อให้คุณใช้ SavedState Serialization API กับMutableStateของ Compose ได้ (I4f690, b/378895074)
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชัน Factory เพื่อสร้าง
SavedStateจากSavedStateที่มีอยู่ (I39f9a) - เพิ่มการรองรับ
Array<SavedState>และList<SavedState>ในandroidx.savedstate(Idd8a5) - เพิ่ม
SavedStateConfigพารามิเตอร์ที่ไม่บังคับลงในการเข้ารหัส/ถอดรหัส SavedState (I6c4c0)
เวอร์ชัน 1.3.0-alpha07
29 มกราคม 2025
androidx.savedstate:savedstate-*:1.3.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
MutableStateFlowSerializerสำหรับการทำซีเรียลkotlinx.coroutines.flow.MutableStateFlow(I6a892, b/378895070)
การเปลี่ยนแปลง API
- แทนที่ฟังก์ชันตัวแทน
SavedStateRegistryOwner.saved()ที่โอเวอร์โหลดด้วยพารามิเตอร์เริ่มต้น (Icd1c1) - สร้างบทคัดย่อของ
JavaSerializableSerializerและParcelableSerializer(I268f6) - นำ
T : CharSequenceทั่วไปออกจากCharSequenceSerializer(Ib40bd)
เวอร์ชัน 1.3.0-alpha06
11 ธันวาคม 2024
androidx.savedstate:savedstate-*:1.3.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
SavedStateตอนนี้ KMP รองรับIBinder,Size,SizeF,Array<Parcelable>,SparseArray<Parcelable>และ Serializable (Android) แล้ว (I1ba94, b/334076622)- เพิ่มอินสแตนซ์
KSerializerที่ใช้เข้ารหัส/ถอดรหัสประเภท Java และ Android ที่ Bundle รองรับได้โดยทำเครื่องหมายฟิลด์ที่เกี่ยวข้องในคลาสด้วย@Serializable(with = ParcelableSerializer::class)(I8c10f, I28caf, b/376026712) - ตอนนี้คุณสามารถแก้ไขอินสแตนซ์
SavedStateRegistryOwnerที่ดึงข้อมูลผ่านfindViewTreeSavedStateRegistryOwnerได้แล้วผ่านผู้ปกครองที่แยกกันของมุมมอง เช่นViewOverlayดูข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักหรือเอกสารประกอบในViewTree.setViewTreeDisjointParentสำหรับข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักของมุมมองที่แยกกัน (Iccb33)
การเปลี่ยนแปลง API
- ทำให้การตั้งชื่อและการจัดระเบียบแพ็กเกจสอดคล้องกับ
SavedStateRegistryOwnerDelegateมากขึ้น (I8c135, b/376026744)
เวอร์ชัน 1.3.0-alpha05
13 พฤศจิกายน 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
การรองรับ KotlinX Serialization
SavedStateตอนนี้รองรับการซีเรียลไลซ์ KotlinX แล้ว คุณสามารถแปลงคลาสที่ใส่คำอธิบายประกอบด้วย@Serializableเป็นSavedStateได้โดยใช้วิธีการencodeToSavedStateและdecodeFromSavedStateSavedStateที่ส่งคืนคือBundleปกติใน Android และ API ใดก็ตามที่ยอมรับ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) }นอกจากนี้ เรายังมี
savedซึ่งเป็นตัวแทนพร็อพเพอร์ตี้แบบเลซี เพื่อให้จัดเก็บคลาส@SerializableในSavedStateRegistryOwnerได้ง่าย (เช่นComponentActivity,Fragmentฯลฯ) และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดและสร้างใหม่ โปรดทราบว่าsaveddelegate จะทำงานแบบเลซี่และจะไม่เรียกใช้initLambda หรือบันทึกสิ่งใดลงในSavedStateRegistryจนกว่าจะมีการเข้าถึง (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") } }มีผู้แทนพร็อพเพอร์ตี้
savedที่คล้ายกันสำหรับSavedStateHandleซึ่งเพิ่มในวงจร2.9.0-alpha07
การเปลี่ยนแปลง API
- เพิ่ม
toMapลงในSavedStateเพื่อให้สามารถแปลงSavedStateเป็นMapปกติ (สำเนาแบบตื้น) ได้ (I487b9, b/334076622) SavedStateตอนนี้ KMP รองรับอาร์เรย์แล้ว (Ic0552, b/334076622)
เวอร์ชัน 1.3.0-alpha04
30 ตุลาคม 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ KMP ของ SavedState รองรับ Char แล้ว (I9ac2f, b/334076622)
- เพิ่ม
putNullและisNullลงใน KMP ของ SavedState (Iea71d, b/334076622) - เพิ่ม
savedStateพารามิเตอร์จากโรงงานเพิ่มเติมที่รองรับMap<String, Any>เริ่มต้น (I9b37d, b/334076622) - ตอนนี้ KMP ของ SavedState รองรับการเปรียบเทียบ
contentDeepEqualsแล้ว (Ia515c, b/334076622) - ตอนนี้ KMP ของ SavedState รองรับ Long แล้ว (I4c180, b/334076622)
เวอร์ชัน 1.3.0-alpha03
16 ตุลาคม 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญ เวอร์ชัน 1.3.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.3.0-alpha02
2 ตุลาคม 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
Kotlin Multiplatform
- ตอนนี้โมดูล
SavedStateใช้ได้กับ KMP แล้ว ตอนนี้แพลตฟอร์มที่รองรับรวมถึงสภาพแวดล้อมบนเดสก์ท็อป Android, iOS, Linux, Mac และ JVM (I26305, b/334076622)
ฟีเจอร์ใหม่
- เปิดตัว
SavedStateประเภทที่ทึบแสงเป็นนามธรรมเพื่อให้วิธีที่สอดคล้องกันในการบันทึกและกู้คืนสถานะแอปพลิเคชันใน KMP ซึ่งมีSavedStateReaderและSavedStateWriterสำหรับแก้ไขสถานะที่จะบันทึก ใน AndroidSavedStateเป็นนามแฝงประเภทสำหรับBundleซึ่งช่วยให้มั่นใจได้ถึงความเข้ากันได้แบบไบนารีและอำนวยความสะดวกในการย้ายข้อมูล API ที่มีอยู่ไปยังชุดแหล่งที่มาทั่วไป ในแพลตฟอร์มอื่นๆSavedStateคืออินสแตนซ์ของ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")
}
การเปลี่ยนแปลง API
- ตอนนี้
SavedStateRegistryและSavedStateRegistryControllerใช้ได้กับ KMP แล้ว (Id7bb8, b/334076622) - ตอนนี้
SavedState,SavedStateWriterและSavedStateReaderเข้ากันได้กับ KMP แล้ว (I26305, b/334076622)
เวอร์ชัน 1.3.0-alpha01
7 สิงหาคม 2024
androidx.savedstate:savedstate:1.3.0-alpha01 และ androidx.savedstate:savedstate-ktx:1.3.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้เราได้ย้าย
savedstate-ktxส่วนขยาย Kotlin ไปยังโมดูล base savedstate แล้ว (I1cc18, b/274803094)
หมายเหตุ
- อัปเดต
compileSdkเป็น 35 (5dc41be)
เวอร์ชัน 1.2.1
เวอร์ชัน 1.2.1
22 มีนาคม 2023
androidx.savedstate:savedstate:1.2.1 และ androidx.savedstate:savedstate-ktx:1.2.1 เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
SavedStateตอนนี้ขึ้นอยู่กับ Lifecycle2.6.1แล้ว (c1f621)
เวอร์ชัน 1.2.0
เวอร์ชัน 1.2.0
29 มิถุนายน 2022
androidx.savedstate:savedstate:1.2.0 และ androidx.savedstate:savedstate-ktx:1.2.0 เปิดตัวแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0
SavedStateRegistryControllerอนุญาตให้ติดSavedStateRegistryก่อนได้แล้วผ่านperformAttach()- ตอนนี้คุณสามารถดึงข้อมูล
SavedStateProviderที่ลงทะเบียนไว้ก่อนหน้านี้จากSavedStateRegistryผ่านgetSavedStateProvider()ได้แล้ว SavedStateเขียนใหม่ด้วย Kotlin- สำหรับ
SavedStateRegistryOwnerนี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ตอนนี้คุณต้องลบล้างพร็อพเพอร์ตี้savedStateRegistryแทนที่จะใช้ฟังก์ชันgetSavedStateRegistry()ก่อนหน้า - สำหรับ
ViewTreeSavedStateRegistryOwnerการเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้คุณต้องนำเข้าและใช้วิธีการขยาย Kotlin โดยตรงในViewของandroidx.savedstate.setViewTreeSavedStateRegistryOwnerและandroidx.savedstate.findViewTreeSavedStateRegistryOwnerเพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งมาแทนที่ APIsavedstate-ktxของfindViewTreeSavedStateRegistryOwner
- สำหรับ
การเปลี่ยนแปลงลักษณะการทำงาน
SavedStateRegistryจะไม่บันทึก Bundle ที่ว่างเปล่าอีกต่อไปหากไม่มีสถานะที่จะบันทึก
เวอร์ชัน 1.2.0-rc01
11 พฤษภาคม 2022
androidx.savedstate:savedstate:1.2.0-rc01 และ androidx.savedstate:savedstate-ktx:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงเอกสารประกอบ
SavedStateRegistryOwnerKdocs ได้รับการอัปเดตเพื่อชี้แจงความรับผิดชอบและสัญญาที่เจ้าของมีเกี่ยวกับวิธีที่ควรใช้ในการติดตั้งใช้งานอินเทอร์เฟซหรือเมื่อใดที่ควรเรียกใช้เมธอดในSavedStateRegistryController(Iefc95, b/228887344)
เวอร์ชัน 1.2.0-beta01
20 เมษายน 2022
androidx.savedstate:savedstate:1.2.0-beta01 และ androidx.savedstate:savedstate-ktx:1.2.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เขียนคลาส
SavedStateRegistryและViewTreeSavedStateRegistryOwnerใหม่ใน Kotlin สำหรับViewTreeSavedStateRegistryOwnerการเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้คุณต้องนำเข้าและใช้วิธีการขยาย Kotlin โดยตรงในViewของandroidx.savedstate.setViewTreeSavedStateRegistryOwnerและandroidx.savedstate.findViewTreeSavedStateRegistryOwnerเพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งมาแทนที่ APIsavedstate-ktxของfindViewTreeSavedStateRegistryOwnerซึ่งเข้ากันได้กับไบนารีและยังคงเข้ากันได้กับแหล่งที่มาสำหรับการใช้งานที่เขียนในภาษาโปรแกรม Java (b/220191285)
เวอร์ชัน 1.2.0-alpha02
6 เมษายน 2022
androidx.savedstate:savedstate:1.2.0-alpha02 และ androidx.savedstate:savedstate-ktx:1.2.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้คุณสามารถดึงข้อมูล
SavedStateProviderที่ลงทะเบียนไว้ก่อนหน้านี้จากSavedStateRegistryผ่านgetSavedStateProvider()ได้แล้ว (I7ea47, b/215406268)
การเปลี่ยนแปลง API
- เราได้เขียนคลาส
SavedStateRegistryOwner,SavedStateRegistryControllerและRecreatorใหม่ใน Kotlin สำหรับSavedStateRegistryOwnerนี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ตอนนี้คุณต้องลบล้างพร็อพเพอร์ตี้savedStateRegistryแทนที่จะใช้ฟังก์ชันgetSavedStateRegistry()ก่อนหน้า ซึ่งเข้ากันได้กับไบนารีและเข้ากันได้กับแหล่งที่มาสำหรับการใช้งานที่เขียนในภาษาโปรแกรม Java (b/220191285)
เวอร์ชัน 1.2.0-alpha01
26 มกราคม 2022
androidx.savedstate:savedstate:1.2.0-alpha01 และ androidx.savedstate:savedstate-ktx:1.2.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- ตอนนี้
SavedStateRegistryControllerอนุญาตให้ ติดSavedStateRegistryก่อนเวลาผ่านperformAttach()(Ice4bf)
การเปลี่ยนแปลงลักษณะการทำงาน
SavedStateRegistryจะไม่บันทึก Bundle ที่ว่างเปล่าอีกต่อไปหากไม่มีสถานะที่จะบันทึก (aosp/1896865, b/203457956)
เวอร์ชัน 1.1.0
เวอร์ชัน 1.1.0
10 กุมภาพันธ์ 2021
androidx.savedstate:savedstate:1.1.0 และ androidx.savedstate:savedstate-ktx:1.1.0 เปิดตัวแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0
ViewTreeSavedStateRegistryOwnerAPI:ViewTreeSavedStateRegistryOwner.get(View)API ใหม่ช่วยให้คุณดึงSavedStateRegistryที่มีได้เมื่อระบุอินสแตนซ์Viewคุณต้องอัปเกรดเป็น Activity1.2.0, Fragment1.3.0และ AppCompat1.3.0-alpha01ขึ้นไปเพื่อป้อนข้อมูลนี้อย่างถูกต้องsavedstate-ktxอาร์ติแฟกต์: เราได้เพิ่มอาร์ติแฟกต์savedstate-ktxใหม่พร้อมส่วนขยายfindViewTreeSavedStateRegistryOwner()Kotlin สำหรับใช้กับViewTreeSavedStateRegistryOwner
เวอร์ชัน 1.1.0-rc01
16 ธันวาคม 2020
androidx.savedstate:savedstate:1.1.0-rc01 และ androidx.savedstate:savedstate-ktx:1.1.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงตั้งแต่ 1.1.0-beta01 เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-beta01
1 ตุลาคม 2020
androidx.savedstate:savedstate:1.1.0-beta01 และ androidx.savedstate:savedstate-ktx:1.1.0-beta01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงตั้งแต่ 1.1.0-alpha01 เวอร์ชัน 1.1.0-beta01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha01
20 พฤษภาคม 2020
androidx.savedstate:savedstate:1.1.0-alpha01 และ androidx.savedstate:savedstate-ktx:1.1.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
ViewTreeSavedStateRegistryOwner.get(View)API ใหม่ช่วยให้คุณดึงข้อมูลSavedStateRegistryที่มีได้เมื่อระบุอินสแตนซ์Viewคุณต้องอัปเกรดเป็น Activity1.2.0-alpha05, Fragment1.3.0-alpha05และ AppCompat1.3.0-alpha01เพื่อป้อนข้อมูลนี้อย่างถูกต้อง (aosp/1298679)- เราได้เพิ่มอาร์ติแฟกต์
savedstate-ktxใหม่พร้อมส่วนขยายfindViewTreeSavedStateRegistryOwner()Kotlin สำหรับการทำงานกับViewTreeSavedStateRegistryOwner(aosp/1299434)
เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0
5 กันยายน 2019
androidx.savedstate:savedstate:1.0.0 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์หลักของ SavedState 1.0.0
androidx.savedstate ได้รับการอัปเกรดเป็นรุ่นที่เสถียร ซึ่งเป็นชุด API ที่ช่วยให้นักพัฒนาซอฟต์แวร์เสียบปลั๊กคอมโพเนนต์เข้ากับกระบวนการกู้คืน / saveInstanceState ได้ จุดแรกเข้าหลักของ API คือ SavedStateRegistry ซึ่งเป็นวิธีดึงสถานะที่บันทึกไว้ก่อนหน้านี้โดยใช้ consumeRestoredStateForKey และลงทะเบียนการเรียกกลับไปยัง registerSavedStateProvider เพื่อระบุสถานะที่บันทึกไว้เมื่อระบบขอ
เวอร์ชัน 1.0.0-rc01
2 กรกฎาคม 2019
androidx.savedstate:savedstate:1.0.0-rc01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขกฎ ProGuard ที่ไม่ถูกต้อง (b/132655499)
เวอร์ชัน 1.0.0-beta01
7 พฤษภาคม 2019
androidx.savedstate:savedstate:1.0.0-beta01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
เวอร์ชัน 1.0.0-alpha02
13 มีนาคม 2019
androidx.savedstate:savedstate:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว androidx.savedstate:savedstate รวมอาร์ติแฟกต์ androidx.savedstate:savedstate-bundle และ androidx.savedstate:savedstate-common ไว้ในอาร์ติแฟกต์เดียว เนื่องจากเราตัดสินใจที่จะลดความซับซ้อนของโครงสร้างพื้นฐานของ SavedState และนำ Generics ออกจาก SavedStateRegistry จึงไม่จำเป็นต้องมีโมดูลแยกต่างหาก
ดูรายการคอมมิตทั้งหมดที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
- เพิ่ม
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )แล้ว ระบบจะสร้างอินสแตนซ์ของคลาสที่ระบุและเรียกใช้เมธอดAutoRecreated.onRecreatedเมื่อคอมโพเนนต์ที่เป็นเจ้าของรีสตาร์ท
การเปลี่ยนแปลง API
- นำคำทั่วไปออกจาก
SavedStateRegistry<T>แล้ว - ระบบนำ AbstractSavedStateRegistry และ BundlableSavedStateRegistry ออกแล้ว โปรดใช้
SavedStateRegistryแบบง่ายแทน - เปลี่ยนชื่อ
BundleSavedStateRegistryOwnerเป็นSavedStateRegistryOwner
เวอร์ชัน 1.0.0-alpha01
17 ธันวาคม 2018
นี่คือรุ่นแรกของ SavedState
ฟีเจอร์ใหม่
androidx.savedstate เป็นชุด API ระดับอัลฟ่าชุดใหม่ที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถเสียบคอมโพเนนต์เข้ากับกระบวนการกู้คืน / บันทึกสถานะอินสแตนซ์ จุดแรกเข้าหลักของ API คือ SavedStateRegistry<T> ซึ่งเป็นวิธีดึงข้อมูลสถานะที่บันทึกไว้ก่อนหน้านี้ผ่าน consumeRestoredStateForKey และลงทะเบียนการเรียกกลับไปยัง registerSavedStateProvider เพื่อระบุสถานะที่บันทึกไว้เมื่อระบบขอ