สถานะที่บันทึกไว้
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
2 กรกฎาคม 2025 | 1.3.1 | - | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน SavedState คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูลของคุณ
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") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณจะช่วยให้ Jetpack ทำงานได้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.3
เวอร์ชัน 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
SavedState
รองรับ KotlinX Serialization แล้ว คุณสามารถแปลงคลาสที่ใส่คำอธิบายประกอบด้วย@Serializable
เป็นSavedState
ได้โดยใช้วิธีการencodeToSavedState
และdecodeFromSavedState
SavedState
ที่ส่งคืนคือ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
ฯลฯ) และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดและสร้างใหม่ โปรดทราบว่าsaved
ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambdainit
หรือบันทึกสิ่งใดลงใน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 ในตัวของ 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
SavedState
รองรับ KotlinX Serialization แล้ว คุณสามารถแปลงคลาสที่ใส่คำอธิบายประกอบด้วย@Serializable
เป็นSavedState
ได้โดยใช้วิธีการencodeToSavedState
และdecodeFromSavedState
SavedState
ที่ส่งคืนคือ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
ฯลฯ) และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดและสร้างใหม่ โปรดทราบว่าsaved
ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambdainit
หรือบันทึกสิ่งใดลงใน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
เพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งมาแทนที่savedstate-ktx
API ของ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 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงเอกสาร
SavedStateRegistryOwner
Kdocs ได้รับการอัปเดตเพื่อชี้แจงความรับผิดชอบและสัญญาที่เจ้าของมีเกี่ยวกับวิธีที่ควรใช้กับอินเทอร์เฟซหรือเวลาที่ควรเรียกใช้เมธอดใน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
เพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งมาแทนที่savedstate-ktx
API ของ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
ViewTreeSavedStateRegistryOwner
API: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 ที่ช่วยให้นักพัฒนาซอฟต์แวร์เสียบปลั๊กคอมโพเนนต์เข้ากับกระบวนการกู้คืน / บันทึกสถานะอินสแตนซ์ได้ จุดแรกเข้าหลักของ 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
เพื่อระบุสถานะที่บันทึกไว้เมื่อระบบขอ