สถานะที่บันทึกไว้

เขียนคอมโพเนนต์ที่เสียบได้ซึ่งจะบันทึกสถานะ UI เมื่อกระบวนการสิ้นสุดลง และกู้คืนสถานะเมื่อกระบวนการรีสตาร์ท
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
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 UI 1.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 สำหรับแก้ไขสถานะที่จะบันทึก ใน Android SavedState เป็นนามแฝงประเภทสำหรับ 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ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambda init หรือบันทึกสิ่งใดลงใน 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ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambda init หรือบันทึกสิ่งใดลงใน 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 สำหรับแก้ไขสถานะที่จะบันทึก ใน Android SavedState เป็นนามแฝงประเภทสำหรับ 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 มีคอมมิตเหล่านี้

การอัปเดตการขึ้นต่อกัน

เวอร์ชัน 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 คุณต้องอัปเกรดเป็น Activity 1.2.0, Fragment 1.3.0 และ AppCompat 1.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 คุณต้องอัปเกรดเป็น Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 และ AppCompat 1.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 เพื่อระบุสถานะที่บันทึกไว้เมื่อระบบขอ