วงจร

คอมโพเนนต์ที่รับรู้ถึงวงจรจะดำเนินการ เพื่อตอบสนองต่อการเปลี่ยนแปลงสถานะวงจรของคอมโพเนนต์อื่น เช่น กิจกรรมและ Fragment ซึ่งจะช่วยให้คุณสร้างโค้ดที่มีการจัดระเบียบที่ดีขึ้นและมักจะมีน้ำหนักเบากว่าเดิม ทำให้ดูแลรักษาง่ายขึ้น

ตารางนี้แสดงอาร์ติแฟกต์ทั้งหมดในกลุ่ม androidx.lifecycle

อาร์ติแฟกต์ รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
วงจร-* 2.9.1 - - -
lifecycle-viewmodel-navigation3 - - - 1.0.0-alpha03
ไลบรารีนี้ได้รับการอัปเดตล่าสุดเมื่อวันที่ 2 กรกฎาคม 2025

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Lifecycle คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูลของคุณ

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.9.1"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // ViewModel integration with Navigation3
        implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.9.1"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // ViewModel integration with Navigation3
        implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.9.1"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.9.1"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณจะช่วยให้ Jetpack ทำงานได้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

Lifecycle ViewModel Navigation3 เวอร์ชัน 1.0.0

เวอร์ชัน 1.0.0-alpha03

2 กรกฎาคม 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03 และ androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงการขึ้นต่อกัน

  • ตอนนี้ Lifecycle ViewModel Navigation 3 ขึ้นอยู่กับ Navigation3 Alpha05 แล้ว

เวอร์ชัน 1.0.0-alpha02

18 มิถุนายน 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02 และ androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้

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

เวอร์ชัน 1.0.0-alpha01

23 พฤษภาคม 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • Lifecycle ViewModel Navigation3 เป็นไลบรารีใหม่ที่สร้างขึ้นควบคู่ไปกับ Navigation3 เพื่อให้การผสานรวมกับ ViewModels อาร์ติแฟกต์ androidx.lifecycle:lifecycle-viewmodel-navigation3 จะมี ViewModelStoreNavEntryDecorator ซึ่งมี ViewModelStoreOwner ที่ไม่ซ้ำกันสำหรับเนื้อหาของ NavEntry แต่ละรายการ นอกจากนี้ ยังมี rememberViewModelStoreNavEntryDecorator() เพื่อให้มั่นใจว่าการเปลี่ยนแปลงการกำหนดค่าจะจัดการ Decorator อย่างถูกต้อง
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()

NavDisplay(
  ,
  entryDecorators =
  listOf(
    rememberSceneSetupNavEntryDecorator(),
    rememberSavedStateNavEntryDecorator(),
    viewModelDecorator
  )
)

เวอร์ชัน 2.9

เวอร์ชัน 2.9.1

4 มิถุนายน 2025

androidx.lifecycle:lifecycle-*:2.9.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.1 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขสถานะ SavedStateHandle.remove(key) ไม่ล้าง SavedStateHandle.getMutableStateFlow(key) (d5f939, b/418746333)

เวอร์ชัน 2.9.0

7 พฤษภาคม 2025

androidx.lifecycle:lifecycle-*:2.9.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.8.0

  • ตอนนี้มีอาร์ติแฟกต์ KMP ใหม่ที่ให้คลาส ViewModelScenario สำหรับการทดสอบ ViewModels แบบแยกกัน โดยรองรับ onCleared และ SavedStateHandle รวมถึงการทดสอบการสิ้นสุดและการสร้างกระบวนการใหม่ผ่าน recreate()androidx.lifecycle:lifecycle-viewmodel-testing
  • เพิ่ม getMutableStateFlow ไปยัง SavedStateHandle เพื่อคืน MutableStateFlow ฟังก์ชันใหม่นี้ใช้ได้เฉพาะกับคีย์และใช้กับ getLiveData ไม่ได้ ระบบจะแสดงข้อยกเว้นหากคุณพยายามใช้ทั้ง 2 อย่างเพื่อเข้าถึงสถานะเดียวกัน
  • CreationExtras ตอนนี้มีตัวดำเนินการโอเวอร์โหลดที่คล้ายกับแผนที่เพื่อเปิดใช้การจัดการเนื้อหาใน Kotlin ตามรูปแบบภาษา ซึ่งจะช่วยให้ใช้ in, += และ + กับ CreationExtras ได้

การรองรับการซีเรียลไลซ์ KotlinX

  • เราได้เพิ่มการรองรับ KotlinX Serialization ใน SavedState 1.3.0 และได้เปิดตัว saved ซึ่งเป็นตัวแทนพร็อพเพอร์ตี้แบบเลซี่ เพื่อให้จัดเก็บคลาส @Serializable ใน SavedStateHandle ได้ง่ายๆ และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดลงและสร้างขึ้นใหม่ โปรดทราบว่าsavedตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambda init หรือบันทึกสิ่งใดลงใน SavedStateHandle จนกว่าจะมีการเข้าถึง

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyViewModel(handle: SavedStateHandle) : ViewModel() {
        var person by handle.saved { Person("John", "Doe") }
    
        fun onPersonChanged(person: Person) {
            this.person = person
        }
    }
    

Kotlin Multiplatform

  • ตอนนี้lifecycle-testingโมดูลใช้ได้กับ KMP แล้ว ซึ่งรวมถึง API อย่าง TestLifecycleOwner
  • ตอนนี้lifecycle-viewmodel-savedstateโมดูลใช้ได้กับ KMP แล้ว ซึ่งรวมถึง API อย่าง SavedStateHandle
  • ตอนนี้ androidx.compose.ui.platform.LocalLifecycleOwner พร้อมใช้งานในชุดแหล่งที่มาทั่วไปแล้ว
  • NewInstanceFactory พร้อมใช้งานบนเป้าหมาย JVM Desktop และ Android แล้ว

การเปลี่ยนแปลงลักษณะการทำงาน

  • สถานะLifecycle.DESTROYEDเป็นสถานะสุดท้าย และความพยายามใดๆ ที่จะย้ายLifecycleจากสถานะนี้ไปยังสถานะอื่นจะส่งผลให้เกิดIllegalStateException
  • SavedStateHandle จะไม่รวม SavedStateProvider.saveState() ที่ Bundle ที่แสดงผลว่างเปล่าอีกต่อไป

เวอร์ชัน 2.9.0-rc01

23 เมษายน 2025

androidx.lifecycle:lifecycle-*:2.9.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 2.9.0-beta01

9 เมษายน 2025

androidx.lifecycle:lifecycle-*:2.9.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • Lifecycle ViewModel Compose ตอนนี้ใช้การตั้งค่า Kotlin Multiplatform เดียวกันกับ Compose Runtime 1.7.1 ขึ้นไปแล้ว โดยเราได้นำอาร์ติแฟกต์ -desktop ออกแล้ว และเพิ่มอาร์ติแฟกต์ -jvmStubs และ -linuxx64Stubs เข้ามาแทน เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้ (I5cb14, b/406592090)

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

  • ตอนนี้ไลบรารีนี้กำหนดเป้าหมายเป็นระดับภาษา Kotlin 2.0 และต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • Lifecycle ViewModel Compose ตอนนี้ขึ้นอยู่กับ Compose 1.7.8 (I5cb14, b/406592090)

เวอร์ชัน 2.9.0-alpha13

26 มีนาคม 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha13 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญต่อสาธารณะ เวอร์ชัน 2.9.0-alpha13 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 2.9.0-alpha12

12 มีนาคม 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha12 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha12 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม@MainThreadคำอธิบายประกอบไปยัง ViewModelProvider.get ในแพลตฟอร์ม KMP ที่รองรับทั้งหมด (I7e8dd, b/397736115)
  • เปลี่ยนชื่อ SavedState*Delegates เป็น SavedState*Delegate (I8589b, b/399629301)

เวอร์ชัน 2.9.0-alpha11

26 กุมภาพันธ์ 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha11 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มพารามิเตอร์ SavedStateConfig ให้กับผู้มอบสิทธิ์ saved() (I39b3a)

เวอร์ชัน 2.9.0-alpha10

12 กุมภาพันธ์ 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha10 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • ย้าย MutableStateSerializer ไปยัง savedstate-compose จาก lifecycle-viewmodel-compose (I4f690, b/378895074)

การมีส่วนร่วมภายนอก

  • เพิ่มปัญหา Lint ใหม่สำหรับการเรียกใช้ Lifecycle::currentState ในการจัดองค์ประกอบ แทนที่จะแนะนำให้ใช้ currentStateAsalue().value เพื่อให้มั่นใจว่าการเปลี่ยนแปลงสถานะ Lifecycle จะทำให้เกิดการจัดองค์ประกอบใหม่ได้อย่างถูกต้อง ขอขอบคุณ Steven Schoen (Iad484)

เวอร์ชัน 2.9.0-alpha09

29 มกราคม 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม MutableStateSerializer สำหรับการทำอนุกรม androidx.compose.runtime.MutableState (Idfc48, b/378895074)

การเปลี่ยนแปลง API

  • แทนที่ฟังก์ชันตัวแทน SavedStateHandle.saved() ที่โอเวอร์โหลดด้วยพารามิเตอร์เริ่มต้น (Icd1c1)
  • AbstractSavedStateViewModelFactory เลิกใช้งานแล้วเนื่องจากจะสร้าง SavedStateHandle สำหรับทุก ViewModel ซึ่งทำให้เกิดค่าใช้จ่ายที่ไม่จำเป็น ใช้ ViewModelProvider.Factory กับ CreationExtras.createSavedStateHandle แทนเพื่อให้สร้าง ViewModel ได้อย่างมีประสิทธิภาพมากขึ้น (Ia920b, b/388590327)

เวอร์ชัน 2.9.0-alpha08

11 ธันวาคม 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม ViewModelScenario.recreate เพื่อจำลองการสิ้นสุดกระบวนการของระบบ ซึ่งจะสร้าง ViewModel ที่อยู่ระหว่างทดสอบและคอมโพเนนต์ที่เกี่ยวข้องทั้งหมดขึ้นมาใหม่ (Id6a69, b/381063087)
  • ตอนนี้คุณสามารถแก้ไขอินสแตนซ์ LifecycleOwner และ ViewModelStoreOwner ที่ดึงข้อมูลผ่าน findViewTree API ที่เกี่ยวข้องได้แล้วผ่านองค์ประกอบระดับบนสุดที่แยกกันของมุมมอง เช่น ViewOverlay ดูข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักหรือเอกสารประกอบใน ViewTree.setViewTreeDisjointParent สำหรับข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบหลักที่ไม่มีการเชื่อมต่อ (I800f4)

การเปลี่ยนแปลง API

  • ทำให้การตั้งชื่อและการจัดระเบียบแพ็กเกจสอดคล้องกับ SavedStateRegistryOwnerDelegate มากขึ้น (I8c135, b/376026744)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ie4340, b/326456246)
  • ลำดับการViewModel.onClearedล้างเอกสาร (I586c7, b/363984116)

เวอร์ชัน 2.9.0-alpha07

13 พฤศจิกายน 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้

ความเข้ากันได้ของ Kotlin Multiplatform

  • ตอนนี้ Lifecycle ViewModel SavedState ใช้ได้กับ KMP แล้ว ซึ่งจะช่วยให้คุณใช้ SavedStateHandle ในโค้ดทั่วไปได้ (Ib6394, b/334076622)

การรองรับการซีเรียลไลซ์ KotlinX

  • เราได้เพิ่มการรองรับ KotlinX Serialization ใน SavedState 1.3.0-alpha05 และได้เปิดตัว saved ซึ่งเป็นตัวแทนพร็อพเพอร์ตี้แบบเลซี่ เพื่อให้จัดเก็บคลาส @Serializable ใน SavedStateHandle ได้ง่ายๆ และให้ระบบกู้คืนคลาสเหล่านั้นโดยอัตโนมัติเมื่อกระบวนการสิ้นสุดลงและสร้างขึ้นใหม่ โปรดทราบว่าsavedตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambda init หรือบันทึกสิ่งใดลงใน SavedStateHandle จนกว่าจะมีการเข้าถึง (I47a88, b/376026744)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyViewModel(handle: SavedStateHandle) : ViewModel() {
        var person by handle.saved { Person("John", "Doe") }
    
        fun onPersonChanged(person: Person) {
            this.person = person
        }
    }
    

การเปลี่ยนแปลง API

  • เพิ่ม getMutableStateFlow ไปยัง SavedStateHandle เพื่อคืน MutableStateFlow ฟังก์ชันใหม่นี้ใช้ได้เฉพาะกับคีย์และใช้กับ getLiveData ไม่ได้ ระบบจะแสดงข้อยกเว้นหากคุณพยายามใช้ทั้ง 2 อย่างเพื่อเข้าถึงสถานะเดียวกัน (I04a4f, b/375408415)

เวอร์ชัน 2.9.0-alpha06

30 ตุลาคม 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงลักษณะการทำงาน

  • สถานะLifecycle.DESTROYEDเป็นสถานะสุดท้าย และความพยายามใดๆ ที่จะย้ายLifecycleจากสถานะนี้ไปยังสถานะอื่นจะส่งผลให้เกิดIllegalStateException (I116c4, b/370577987)
  • SavedStateHandle จะไม่รวม SavedStateProvider.saveState() ที่ Bundle ที่แสดงผลว่างเปล่าอีกต่อไป (I910b5, b/370577987)

การแก้ไขข้อบกพร่อง

  • Lifecycle.eventFlow จะทำงานเสร็จอย่างถูกต้องเมื่อ Lifecycle เป็น DESTROYED (I293b2, b/374043130)

เวอร์ชัน 2.9.0-alpha05

16 ตุลาคม 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha05 เปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญ เวอร์ชัน 2.9.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 2.9.0-alpha04

2 ตุลาคม 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

Kotlin Multiplatform

  • ตอนนี้เราได้กำหนดค่าlifecycle-viewmodel-savedstateโมดูลให้เข้ากันได้กับ KMP เพื่อเตรียมพร้อมสำหรับ API เช่น SavedStateHandle ที่จะพร้อมใช้งานในชุดแหล่งที่มาทั่วไปในรุ่นต่อๆ ไป (I503ed, I48764, b/334076622)

เวอร์ชัน 2.9.0-alpha03

18 กันยายน 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • จากวงจร2.8.6: NullSafeMutableLiveDataข้อผิดพลาดของ Lint ได้รับการปรับปรุงการรองรับสำหรับแคสต์อัจฉริยะเพื่อหลีกเลี่ยงผลบวกลวง (85fed6, b/181042665)

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

เวอร์ชัน 2.9.0-alpha02

4 กันยายน 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • จากวงจร2.8.5: อัปเดตandroidx.lifecycle.ReportFragmentกฎ ProGuard เพื่ออนุญาตการปกปิดโค้ด (ff898e1)

การมีส่วนร่วมภายนอก

  • ย้าย androidx.compose.ui.platform.LocalLifecycleOwner ไปยังชุดแหล่งข้อมูลทั่วไป (KMP) ขอขอบคุณ Ivan Matkov จาก JetBrains ที่มีส่วนร่วม (8cd5d03)
  • จาก Lifecycle 2.8.5: ตอนนี้ตัวแทนส่วนขยาย SavedStateHandle.saveable รองรับค่าที่กำหนดให้เป็น Null ได้แล้ว ขอขอบคุณ Roman Kalukiewicz สำหรับการมีส่วนร่วม (0d78ea6)

เวอร์ชัน 2.9.0-alpha01

7 สิงหาคม 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

Kotlin Multiplatform

  • lifecycle-testing ใช้งานร่วมกับ KMP ได้แล้ว (Iea41e)
  • เพิ่มการรองรับlinuxArm64เป้าหมายหลายแพลตฟอร์มของ Kotlin (I139d3, b/338268719)

ฟีเจอร์ใหม่

  • androidx.lifecycle:lifecycle-viewmodel-testingอาร์ติแฟกต์ KMP ใหม่พร้อมใช้งานแล้ว ซึ่งมีคลาส ViewModelScenario สำหรับการทดสอบ ViewModel แยกกัน โดยรองรับ onCleared (ทุกแพลตฟอร์ม) และ SavedStateHandle (Android เท่านั้น) (337f68d, c9b3409, 9799a95c, b/264602919)
  • ตอนนี้การสร้าง ViewModel ด้วย ViewModelProvider จะปลอดภัยต่อเธรดแล้ว และระบบได้นำคำอธิบายประกอบ @MainThread ออกแล้ว (Ifd978, b/237006831)

การเปลี่ยนแปลง API

  • เพิ่มCreationExtras.Key()ฟังก์ชัน Factory เพื่อลดความซับซ้อนในการสร้างออบเจ็กต์ CreationExtras.Key แบบไม่ระบุชื่อ (I970ee)
  • CreationExtras ตอนนี้มีตัวดำเนินการโอเวอร์โหลดที่คล้ายกับแผนที่เพื่อเปิดใช้การจัดการเนื้อหาใน Kotlin ตามรูปแบบภาษา ซึ่งจะช่วยให้ใช้ in, += และ + กับ CreationExtras ได้ (Ib4353)
  • ตอนนี้ CreationExtras ได้ติดตั้งใช้งานเมธอด equals, hashCode และ toString แล้ว (Ib4353)
  • NewInstanceFactory พร้อมใช้งานบนเป้าหมาย JVM Desktop และ Android แล้ว (d3d0892)
  • พร็อพเพอร์ตี้ส่วนขยายแบบอินไลน์เพื่อเปิดเผย Application พื้นฐานอย่างปลอดภัยใน Kotlin เวอร์ชัน 2.0 (I39df2)

การแก้ไขข้อบกพร่อง

  • นำการระบุสิทธิ์เข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออก เนื่องจากระบบจะดำเนินการนี้โดยอัตโนมัติผ่านการสร้างโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับการสร้างทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (If6b4c, b/345472586)

เวอร์ชัน 2.8

เวอร์ชัน 2.8.7

30 ตุลาคม 2024

androidx.lifecycle:lifecycle-*:2.8.7 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.7 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • androidx.compose.ui.platform.LocalLifecycleOwner พร้อมใช้งานในชุดแหล่งที่มาทั่วไป (KMP) แล้ว (6a3f5b3)
  • lifecycle-runtime-compose: ระบบได้นำอาร์ติแฟกต์ desktop ออกแล้ว และเพิ่มอาร์ติแฟกต์ -jvmStubs และ -linuxx64Stubs เป้าหมายเหล่านี้ไม่มีไว้ให้ใช้งาน แต่เป็นตัวยึดตำแหน่งเพื่อช่วยให้ Jetbrains Compose ทำงานได้ (6a3f5b3)

เวอร์ชัน 2.8.6

18 กันยายน 2024

androidx.lifecycle:lifecycle-*:2.8.6 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.6 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • NullSafeMutableLiveDataข้อผิดพลาดของ Lint ได้ปรับปรุงการรองรับการแคสต์อัจฉริยะเพื่อหลีกเลี่ยงการตรวจสอบที่ผิดพลาด (85fed6, b/181042665)

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

  • ตอนนี้ Lifecycle Runtime Compose ขึ้นอยู่กับ Compose Runtime 1.7.1 แล้ว

เวอร์ชัน 2.8.5

4 กันยายน 2024

androidx.lifecycle:lifecycle-*:2.8.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.5 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • อัปเดตกฎ androidx.lifecycle.ReportFragment ProGuard เพื่ออนุญาตการปกปิดโค้ด (ff898e1)

การมีส่วนร่วมภายนอก

  • ตอนนี้ตัวแทนส่วนขยาย SavedStateHandle.saveable รองรับค่าที่กำหนดให้เป็น Null ได้แล้ว ขอขอบคุณ Roman Kalukiewicz สำหรับการมีส่วนร่วม (0d78ea6)

เวอร์ชัน 2.8.4

24 กรกฎาคม 2024

androidx.lifecycle:lifecycle-*:2.8.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.4 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • LiveData.asFlow() ตอนนี้จัดการกรณีที่ Flow ที่แสดงผลเสร็จสมบูรณ์ทันทีหลังจากได้รับค่าที่ตั้งค่าไว้แล้วใน LiveData ได้อย่างถูกต้อง (เช่น เมื่อใช้ take(1)) (I9c566)
  • ตอนนี้ Lifecycle*Effect เสร็จสมบูรณ์แล้ว (กล่าวคือ หากมีการเรียกใช้ onStopOrDispose เนื่องจากหยุดวงจรการทำงาน จะไม่มีการเรียกใช้ครั้งที่ 2 เมื่อมีการทิ้ง เว้นแต่วงจรการทำงานจะกลับไปที่ STARTED อีกครั้ง) (I5f607, b/352364595)

เวอร์ชัน 2.8.3

1 กรกฎาคม 2024

androidx.lifecycle:lifecycle-*:2.8.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.3 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาความเข้ากันได้แบบย้อนหลังของ Lifecycle 2.8 กับ Compose 1.6.0 และต่ำกว่าเมื่อใช้การลดขนาดโค้ด (aosp/3133056, b/346808608)

เวอร์ชัน 2.8.2

12 มิถุนายน 2024

androidx.lifecycle:lifecycle-*:2.8.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.2 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขCompositionLocal LocalLifecycleOwner not presentข้อผิดพลาดเมื่อใช้ Lifecycle 2.8.X กับ Compose 1.6.X หรือเวอร์ชันก่อนหน้า ตอนนี้คุณใช้ Lifecycle 2.8.2 กับ Compose เวอร์ชันใดก็ได้โดยไม่ต้องใช้การแก้ปัญหา (aosp/3105647, b/336842920)
  • ViewModelProvider จะไม่ขัดข้องอีกต่อไปเมื่อรวมการอ้างอิงวงจร compileOnly เวอร์ชันก่อนหน้ากับเวอร์ชัน 2.8 ขึ้นไป ซึ่งจะช่วยแก้ไขปัญหาเกี่ยวกับไลบรารี เช่น LeakCanary (I80383, b/341792251)

เวอร์ชัน 2.8.1

29 พฤษภาคม 2024

androidx.lifecycle:lifecycle-*:2.8.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.1 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • lifecycle-viewmodel-compose ตอนนี้มีเพียงการขึ้นต่อกันทั่วไปกับ compose-runtime เท่านั้น ซึ่งเป็นการนำการขึ้นต่อกันทั่วไปกับ compose-ui ออก อาร์ติแฟกต์ Android จะยังคงมี compose-ui เพื่อให้เข้ากันได้ (aosp/3079334, b/339562627)
  • ViewModelsaveable ที่ผสานรวมโดยใช้ผู้มอบสิทธิ์พร็อพเพอร์ตี้จะใช้ชื่อคลาสเป็นส่วนหนึ่งของคีย์ที่สร้างขึ้นโดยอัตโนมัติ ซึ่งจะหลีกเลี่ยงความขัดแย้งหากหลายคลาสใช้ SavedStateHandle เดียวกัน (aosp/3063463)

เวอร์ชัน 2.8.0

14 พฤษภาคม 2024

androidx.lifecycle:lifecycle-*:2.8.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 2.7.0

  • LocalLifecycleOwner ย้ายจาก Compose UI ไปยัง lifecycle-runtime-compose เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้
  • ตอนนี้อาร์ติแฟกต์ lifecycle-runtime-compose มี API dropUnlessResumed และ dropUnlessStarted ซึ่งช่วยให้คุณทิ้งคลิกหรือเหตุการณ์อื่นๆ ที่เกิดขึ้นได้แม้ว่า LifecycleOwner จะลดลงต่ำกว่า Lifecycle.State ที่กำหนดแล้วก็ตาม ตัวอย่างเช่น คุณสามารถใช้ฟีเจอร์นี้กับ Navigation Compose เพื่อหลีกเลี่ยงการจัดการเหตุการณ์คลิกหลังจากที่การเปลี่ยนไปยังหน้าจออื่นเริ่มขึ้นแล้วได้ onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope ตอนนี้เป็นพารามิเตอร์ของเครื่องมือสร้างที่ลบล้างได้แล้ว ซึ่งช่วยให้คุณแทรก Dispatcher ของคุณเองและ SupervisorJob() หรือลบล้างค่าเริ่มต้นได้โดยใช้ backgroundScope ที่มีอยู่ใน runTest (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • เราได้เขียน ViewModel ใหม่ใน Kotlin และตอนนี้ใช้ AutoClosable แทน Closeable แล้ว ตอนนี้ระบบรองรับการเพิ่มAutoCloseableออบเจ็กต์ที่มีkeyซึ่งอนุญาตให้ดึงข้อมูลผ่าน getCloseable() ได้แล้ว

  • การเรียก LifecycleStartEffect และ LifecycleResumeEffect โดยไม่มีคีย์ถือเป็นข้อผิดพลาดแล้วในตอนนี้ โดยเป็นไปตามรูปแบบเดียวกันกับ DisposableEffect API ที่ API เหล่านี้จำลอง

  • เลิกใช้งาน LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) แล้วหันมาใช้ LiveData.toPublisher(lifecycleOwner) แทน

  • ตอนนี้เราได้ย้ายส่วนขยาย lifecycle-livedata-core-ktx Kotlin ไปยังโมดูล lifecycle-livedata-core แล้ว

  • เราได้ปรับโครงสร้างNullSafeMutableLiveDataเพื่อหลีกเลี่ยงผลบวกเท็จจำนวนมาก

ความเข้ากันได้ของ Lifecycle Kotlin Multiplatform

ตอนนี้เราได้จัดส่ง API วงจรหลักใน Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event และ LifecycleRegistry ในอาร์ติแฟกต์ที่เข้ากันได้กับ Kotlin Multiplatform

อาร์ติแฟกต์ที่ได้รับผลกระทบ

  • lifecycle-common ย้าย API ส่วนใหญ่ไปที่ common และรองรับ jvm และ iOS นอกเหนือจาก Android
  • lifecycle-runtime ย้าย API ส่วนใหญ่ไปที่ common และรองรับ jvm และ iOS นอกเหนือจาก Android
  • lifecycle-runtime-ktx ตอนนี้ว่างเปล่าแล้ว เนื่องจาก API ทั้งหมดได้ย้ายไปอยู่ใน lifecycle-runtime แล้ว
  • lifecycle-runtime-compose ย้าย API ทั้งหมดไปยัง common และจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มของ androidx.compose

ความเข้ากันได้ของ ViewModel Kotlin Multiplatform

ตอนนี้เราได้จัดส่งอาร์ติแฟกต์ lifecycle-viewmodel และ API เช่น ViewModel, ViewModelStore, ViewModelStoreOwner และ ViewModelProvider ในอาร์ติแฟกต์ที่เข้ากันได้กับ Kotlin Multiplatform แล้ว

เพื่อรองรับการเปลี่ยนแปลงนี้ วิธีการต่างๆ เช่น วิธีการใน ViewModelProvider ที่ใช้ java.lang.Class<T> ตอนนี้มีวิธีการที่เทียบเท่าซึ่งใช้ kotlin.reflect.KClass<T>

เรายังคงรักษาความเข้ากันได้ของไบนารีใน Android ไว้ แต่ก็มีการเปลี่ยนแปลงที่สำคัญบางอย่างเมื่อเปรียบเทียบพื้นผิวของ Android API กับพื้นผิวของ API ทั่วไป

  • ตอนนี้การสร้างอินสแตนซ์ ViewModelProvider จะทำผ่านเมธอด ViewModelProvider.create() แทนที่จะเรียกใช้เครื่องมือสร้างโดยตรง
  • ViewModelProvider.NewInstanceFactory และ ViewModelProvider.AndroidViewModelFactory จะมีเฉพาะใน Android
    • ขอแนะนำให้โรงงานที่กำหนดเองขยายจาก ViewModelProvider.Factory และใช้วิธี create ที่ใช้ CreationExtras หรือใช้ Kotlin DSL ของ viewModelFactory
  • การใช้ ViewModelProvider โดยไม่มีโรงงานที่กำหนดเองในแพลตฟอร์มที่ไม่ใช่ JVM จะส่งผลให้เกิด UnsupportedOperationException ในแพลตฟอร์ม JVM ระบบจะรักษาความเข้ากันได้โดยใช้ตัวสร้าง ViewModel แบบไม่มีอาร์กิวเมนต์หากไม่ได้ระบุ Factory ที่กำหนดเอง
  • viewModelScope จะเปลี่ยนไปใช้ EmptyCoroutineContext ในแพลตฟอร์มที่ Dispatchers.Main ไม่พร้อมใช้งาน (เช่น Linux)

อาร์ติแฟกต์ที่ได้รับผลกระทบ

  • lifecycle-viewmodel ย้าย API ส่วนใหญ่ไปที่ common และรองรับ jvm และ iOS นอกเหนือจาก Android
  • lifecycle-viewmodel-ktx ตอนนี้ว่างเปล่าแล้ว เนื่องจาก API ทั้งหมดได้ย้ายไปอยู่ใน lifecycle-viewmodel แล้ว
  • lifecycle-viewmodel-compose ย้าย API ทั้งหมดไปยัง common และจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มของ androidx.compose

การเปลี่ยนแปลงลักษณะการทำงาน

  • InitializerViewModelFactory (รวมถึงฟังก์ชันเครื่องมือสร้าง viewModelFactory) จะแสดง IllegalArgumentException หากมีการเพิ่ม initializer ที่มี clazz: KClass<VM : ViewModel> เดียวกันแล้ว (Ic3a36)

ปัญหาที่ทราบ

  • lifecycle-*:2.8.0 ต้องใช้ Compose เวอร์ชันขั้นต่ำ 1.7.0-alpha05 (b/336842920)

เวอร์ชัน 2.8.0-rc01

1 พฤษภาคม 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ไม่ได้แพ็กเกจ Baseline Profile สำหรับคลาส lifecycle-common อย่างถูกต้อง ตอนนี้ฟีเจอร์เหล่านี้รวมอยู่ใน lifecycle-runtime AAR แล้ว (aosp/3038274, b/322382422)
  • แก้ไขการเปลี่ยนแปลงลำดับโดยไม่ตั้งใจในวิธีล้างอินสแตนซ์ AutoCloseable ที่แนบกับ ViewModel โดยได้คืนค่าลำดับก่อนหน้าของ addCloseable(String, AutoCloseable), addClosable(AutoCloseable) และ onCleared() แล้ว (aosp/3041632)
  • ปรับปรุงลักษณะการทำงานเริ่มต้นของการสร้างสำหรับ viewModelScope สำหรับสภาพแวดล้อมของเดสก์ท็อปแบบเนทีฟและ JVM (aosp/3039221)

การมีส่วนร่วมภายนอก

  • ขอขอบคุณ Victor Kropp ที่ช่วยปรับปรุงการตรวจสอบชุดข้อความหลักใน JVM Desktop (aosp/3037116)

เวอร์ชัน 2.8.0-beta01

17 เมษายน 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้อาร์ติแฟกต์ lifecycle-runtime-compose เข้ากันได้กับ Kotlin Multiplatform แล้ว โดยย้ายโค้ดไปยัง common และจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มสำหรับ androidx.compose (If7a71, I4f4a0, b/331769623)

เวอร์ชัน 2.8.0-alpha04

3 เมษายน 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้อาร์ติแฟกต์ lifecycle-viewmodel-compose เข้ากันได้กับ Kotlin Multiplatform แล้ว โดยย้ายโค้ดไปยัง common และจัดส่งอาร์ติแฟกต์ Android ซึ่งตรงกับการรองรับหลายแพลตฟอร์มของ androidx.compose ตอนนี้เมธอด Composable viewModel ยอมรับ KClass นอกเหนือจาก java.lang.Class เพื่อรองรับการเปลี่ยนแปลงนี้ (b/330323282)

การแก้ไขข้อบกพร่อง

  • เราได้ปรับโครงสร้างNullSafeMutableLiveDataเพื่อหลีกเลี่ยงผลบวกเท็จจำนวนมาก (I2d8c1, Iafb18, I03463, I7ecef)

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

  • ตอนนี้อาร์ติแฟกต์ lifecycle-viewmodel-compose ขึ้นอยู่กับ Compose 1.6.0 แล้ว
  • ตอนนี้วงจรขึ้นอยู่กับ Profile Installer 1.3.1 แล้ว

เวอร์ชัน 2.8.0-alpha03

20 มีนาคม 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ViewModel.viewModelScope ตอนนี้เป็นพารามิเตอร์ของเครื่องมือสร้างที่ลบล้างได้แล้ว ซึ่งช่วยให้คุณแทรก Dispatcher ของคุณเองและ SupervisorJob() หรือลบล้างค่าเริ่มต้นได้โดยใช้ backgroundScope ที่มีอยู่ใน runTest (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

ความเข้ากันได้ของ Kotlin Multiplatform

ตอนนี้เราได้จัดส่งอาร์ติแฟกต์ lifecycle-viewmodel และ API เช่น ViewModel, ViewModelStore, ViewModelStoreOwner และ ViewModelProvider ในอาร์ติแฟกต์ที่เข้ากันได้กับ Kotlin Multiplatform แล้ว (b/214568825)

เพื่อรองรับการเปลี่ยนแปลงนี้ วิธีการต่างๆ เช่น วิธีการใน ViewModelProvider ที่ใช้ java.lang.Class<T> ตอนนี้มีวิธีการที่เทียบเท่าซึ่งใช้ kotlin.reflect.KClass<T>

เรายังคงรักษาความเข้ากันได้ของไบนารีใน Android ไว้ แต่ก็มีการเปลี่ยนแปลงที่สำคัญบางอย่างเมื่อเปรียบเทียบพื้นผิวของ Android API กับพื้นผิวของ API ทั่วไป

  • ตอนนี้การสร้างอินสแตนซ์ ViewModelProvider จะทำผ่านเมธอด ViewModelProvider.create() แทนที่จะเรียกใช้เครื่องมือสร้างโดยตรง
  • ViewModelProvider.NewInstanceFactory และ ViewModelProvider.AndroidViewModelFactory จะมีเฉพาะใน Android
    • ขอแนะนำให้โรงงานที่กำหนดเองขยายจาก ViewModelProvider.Factory และใช้วิธี create ที่ใช้ CreationExtras หรือใช้ Kotlin DSL ของ viewModelFactory
  • การใช้ ViewModelProvider โดยไม่มีโรงงานที่กำหนดเองในแพลตฟอร์มที่ไม่ใช่ JVM จะส่งผลให้เกิด UnsupportedOperationException ในแพลตฟอร์ม JVM ระบบจะรักษาความเข้ากันได้โดยใช้ตัวสร้าง ViewModel แบบไม่มีอาร์กิวเมนต์หากไม่ได้ระบุ Factory ที่กำหนดเอง
  • viewModelScope จะเปลี่ยนไปใช้ EmptyCoroutineContext ในแพลตฟอร์มที่ Dispatchers.Main ไม่พร้อมใช้งาน (เช่น Linux)

การเปลี่ยนแปลงลักษณะการทำงาน

  • InitializerViewModelFactory (รวมถึงฟังก์ชันเครื่องมือสร้าง viewModelFactory) จะแสดง IllegalArgumentException หากมีการเพิ่ม initializer ที่มี clazz: KClass<VM : ViewModel> เดียวกันแล้ว (Ic3a36)

การแก้ไขข้อบกพร่อง

  • ViewModel.getCloseable จะจัดการคีย์ที่ซ้ำกัน โดยหาก key มีทรัพยากร AutoCloseable ที่เชื่อมโยงอยู่แล้ว ระบบจะแทนที่และปิดทรัพยากรเก่าทันที (Ibeb67)
  • ตอนนี้การเข้าถึง viewModelScope ของ ViewModel จะปลอดภัยต่อเธรดแล้ว (If4766, b/322407038)

การมีส่วนร่วมภายนอก

  • LocalLifecycleOwner ย้ายจาก Compose UI ไปยัง lifecycle-runtime-compose เพื่อให้ใช้ API ตัวช่วยที่อิงตาม Compose นอก Compose UI ได้ ขอขอบคุณ Jake Wharton สำหรับการมีส่วนร่วม (I6c41b, b/328263448)

เวอร์ชัน 2.8.0-alpha02

21 กุมภาพันธ์ 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เพิ่ม API dropUnlessResumed และ dropUnlessStarted ซึ่งช่วยให้คุณทิ้งคลิกหรือเหตุการณ์อื่นๆ ที่เกิดขึ้นแม้หลังจากที่ LifecycleOwner ลดลงต่ำกว่า Lifecycle.State ที่กำหนด เช่น ใช้กับ Navigation Compose เพื่อหลีกเลี่ยงการจัดการเหตุการณ์คลิกหลังจากที่การเปลี่ยนไปยังหน้าจออื่นเริ่มขึ้นแล้ว onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Conversion ของ Kotlin

  • ตอนนี้ ViewModel เขียนด้วย Kotlin (I16f26, b/214568825)
  • ตอนนี้เราได้ย้ายส่วนขยาย lifecycle-viewmodel-ktx Kotlin ไปยังโมดูลวงจรฐานแล้ว (Id787b, b/274800183)
  • ตอนนี้เราได้ย้ายส่วนขยาย lifecycle-runtime-ktx Kotlin ไปยังโมดูลวงจรฐานแล้ว (Ic3686, b/274800183)
  • ตอนนี้เราได้ย้ายส่วนขยาย lifecycle-livedata-core-ktx Kotlin ไปยังโมดูลวงจรฐานแล้ว (I54a3d, b/274800183)

ความเข้ากันได้ของ Kotlin Multiplatform

  • ตอนนี้เราได้จัดส่ง API วงจรหลักใน Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event และ LifecycleRegistry ในอาร์ติแฟกต์ที่เข้ากันได้กับ Kotlin Multiplatform (b/317249252)

การเปลี่ยนแปลง API

  • การเรียก LifecycleStartEffect และ LifecycleResumeEffect โดยไม่มีคีย์ถือเป็นข้อผิดพลาดแล้วในตอนนี้ โดยเป็นไปตามรูปแบบเดียวกันกับ DisposableEffect API ที่ API เหล่านี้จำลอง (Ib0e0c, b/323518079)
  • ขณะนี้ ViewModel ใช้ AutoCloseable แทน Closeable ซึ่งเป็นการเปลี่ยนแปลงที่เข้ากันได้แบบย้อนหลัง (I27f8e, b/214568825)
  • เลิกใช้งาน LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) แล้วหันมาใช้ LiveData.toPublisher(lifecycleOwner) แทน (Iabe29, b/262623005)

การมีส่วนร่วมภายนอก

  • ขอขอบคุณ Ivan Matkov จาก Jetbrains ที่ช่วยย้าย Lifecycle ไปยัง Kotlin Multiplatform (aosp/2926690, I0c5ac, If445d)

เวอร์ชัน 2.8.0-alpha01

24 มกราคม 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ViewModel ตอนนี้รองรับการเพิ่มออบเจ็กต์ Closeable ที่มี key ซึ่งช่วยให้ดึงข้อมูลผ่าน getCloseable() ได้แล้ว (I3cf63)

เวอร์ชัน 2.7

เวอร์ชัน 2.7.0

10 มกราคม 2024

androidx.lifecycle:lifecycle-*:2.7.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.6.0

  • TestLifecycleOwner ตอนนี้มีฟังก์ชันระงับ setCurrentState() ซึ่งช่วยให้มั่นใจได้ว่าการเปลี่ยนสถานะและLifecycleObserverการเรียกกลับทั้งหมดจะเสร็จสมบูรณ์ก่อนที่จะส่งคืน โปรดทราบว่าการดำเนินการนี้จะไม่ใช้ runBlocking ซึ่งต่างจากการตั้งค่าพร็อพเพอร์ตี้ currentState โดยตรง จึงทำให้ใช้ภายในโครูทีนได้อย่างปลอดภัย เช่น โครูทีนที่ runTest จัดเตรียมไว้ให้
  • ตอนนี้ส่วนขยาย LiveData ของ map และ switchMap จะทำงานเหมือนกับ distinctUntilChanged กล่าวคือ หาก LiveData มีการตั้งค่า value ฟังก์ชัน map/switchMap จะถูกเรียกใช้ทันทีเพื่อป้อนข้อมูล value ของ LiveData ที่ส่งคืน ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะตั้งค่าเริ่มต้นเป็นส่วนหนึ่งของการจัดองค์ประกอบครั้งแรก (เมื่อใช้กับ observeAsState()) แต่จะไม่เปลี่ยนลักษณะการสังเกตการณ์ โดยค่าที่อัปเดตจากแหล่งที่มา LiveData จะยังคงมีผลเมื่อคุณเริ่มสังเกตการณ์ LiveData เท่านั้น
  • รุ่นนี้แก้ไขปัญหาที่ SavedStateHandle จะไม่กู้คืนคลาส Parcelable ที่กำหนดเองอย่างถูกต้องหลังจากกระบวนการสิ้นสุดและสร้างใหม่ เนื่องจากเฟรมเวิร์ก Android ทำให้ข้อมูลประเภทสูญหายไป อาร์เรย์ของ Parcelable ที่กำหนดเองจึงต้องมีการดำเนินการเพิ่มเติม (สร้างอาร์เรย์ที่มีการพิมพ์ของประเภทที่ถูกต้องด้วยตนเอง) และเอกสารประกอบเกี่ยวกับ get, getLiveData และ getStateFlow จะระบุข้อจำกัดนี้โดยเฉพาะ
  • เราได้นำกฎ ProGuard Keep ที่เชื่อมโยงกับ LifecycleObserver ออกแล้ว ซึ่งหมายความว่าโค้ดที่ผ่านการ Proguard ซึ่งต้องการใช้ API ผ่านการสะท้อน (เช่น การใช้คำอธิบายประกอบ @OnLifecycleEvent ที่เลิกใช้งานไปนานแล้ว) จะต้องระบุกฎการเก็บรักษาของตนเองสำหรับ Use Case ที่เฉพาะเจาะจง

การสังเกตการณ์เหตุการณ์วงจร

  • ตอนนี้คุณสามารถดูFlowของ Lifecycle.Event ผ่านวิธีการขยายLifecycle.asFlow()ได้แล้ว ซึ่งเป็นอีกทางเลือกหนึ่งแทนการใช้ LifecycleEventObserver
  • ตอนนี้ผู้ใช้ Jetpack Compose สามารถใช้ LifecycleEventEffect เพื่อเรียกใช้ผลข้างเคียงของ Compose ตาม Lifecycle.Event ได้แล้ว
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • ผู้ใช้ Jetpack Compose สามารถใช้ LifecycleStartEffect และ LifecycleResumeEffect เพื่อจัดการคู่ของเหตุการณ์ได้ โดยจะเริ่มเป็นหยุดและกลับมาทำงานต่อเป็นหยุดชั่วคราวตามลำดับ API นี้จะเหมือนกับ API ที่พบใน DisposableEffect และเหมาะสำหรับกรณีที่การเปลี่ยนแปลงที่เกิดขึ้นเมื่อสถานะเพิ่มขึ้นจะต้องกลับมาเป็นเหมือนเดิมเมื่อสถานะลดลง
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

ดูข้อมูลเพิ่มเติมได้ที่เรียกใช้โค้ดในเหตุการณ์วงจรของออบเจ็กต์

การสังเกตสถานะวงจร

  • ตอนนี้คุณดู Lifecycle.State ปัจจุบันได้ผ่านพร็อพเพอร์ตี้ Lifecycle.currentStateFlow ซึ่งจะแสดง StateFlow โดยที่ value คือ Lifecycle.State ปัจจุบัน
  • ผู้ใช้ Jetpack Compose สามารถใช้ส่วนขยาย Lifecycle.currentStateAsState() เพื่อแสดง Lifecycle.State เป็น State ของ Compose ได้โดยตรง ซึ่งเทียบเท่ากับ lifecycle.currentStateFlow.collectAsState() (และเป็นทางเลือกที่สั้นกว่า)

ดูข้อมูลเพิ่มเติมได้ที่รวบรวมสถานะวงจรของลูกค้าด้วยโฟลว์

เวอร์ชัน 2.7.0-rc02

13 ธันวาคม 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-rc02 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ SavedStateHandle ไม่สามารถกู้คืนคลาส Parcelable ที่กำหนดเองได้อย่างถูกต้องหลังจากกระบวนการสิ้นสุดและสร้างใหม่ เนื่องจากเฟรมเวิร์ก Android ทำให้ข้อมูลประเภทสูญหายไป อาร์เรย์ของ Parcelable ที่กำหนดเองจึงต้องมีการดำเนินการเพิ่มเติม (สร้างอาร์เรย์ที่มีการพิมพ์ของประเภทที่ถูกต้องด้วยตนเอง) และเอกสารประกอบเกี่ยวกับ get, getLiveData และ getStateFlow จะระบุข้อจำกัดนี้โดยเฉพาะ (I0b55a)

เวอร์ชัน 2.7.0-rc01

15 พฤศจิกายน 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-rc01 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ LifecycleStartEffect และ LifecycleResumeEffect จะทิ้งและสร้างบล็อกเอฟเฟกต์ใหม่ได้อย่างถูกต้องหากมีการเปลี่ยนแปลง LifecycleOwner (Ia25c6)

เวอร์ชัน 2.7.0-beta01

1 พฤศจิกายน 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01 จะได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลง เวอร์ชัน 2.7.0-beta01 มีคอมมิตเหล่านี้

  • การอัปเดตเวอร์ชันเบต้า โดยไม่มีการเปลี่ยนแปลงที่สำคัญในเวอร์ชันที่เผยแพร่นี้

เวอร์ชัน 2.7.0-alpha03

18 ตุลาคม 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • lifecycle-runtime-testing มีการตรวจสอบ Lint ใหม่เพื่อหลีกเลี่ยงการตั้งค่า Lifecycle.State ของ TestLifecycleOwner โดยใช้ฟิลด์ currentState เมื่ออยู่ภายในโครูทีน ตอนนี้การตรวจสอบ Lint จะแนะนำให้ระงับ setCurrentState ซึ่งช่วยให้ตั้งค่า Lifecycle.State ได้โดยไม่บล็อก (Icf728, b/297880630)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเกี่ยวกับ LiveData.switchMap ที่การส่งคืนอินสแตนซ์ LiveData เดียวกันทั้งในการเรียกใช้ครั้งแรกและการเรียกใช้ครั้งต่อๆ ไปจะทำให้เพิ่มอินสแตนซ์ LiveData เป็นแหล่งที่มาไม่ได้ (Ibedcba7)

เวอร์ชัน 2.7.0-alpha02

6 กันยายน 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • TestLifecycleOwner ตอนนี้มีฟังก์ชันระงับ setCurrentState() เพื่อให้ผู้ใช้มีตัวเลือกในการใช้ TestLifecycleOwner จากภายในโครูทีน เช่น โครูทีนที่ runTest จัดหาให้ (I329de, b/259344129)

การเปลี่ยนแปลง API

  • ระบบได้ย้ายไฟล์ทั้งหมดจากโมดูล lifecycle-livedata-ktx ไปยังโมดูล lifecycle-livedata หลักแล้ว (I10c6f, b/274800183)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ส่วนขยาย LiveData.map() และ LiveData.switchMap() จะตั้งค่า value ของ LiveData ที่ส่งคืนหาก LiveData ก่อนหน้ามีการตั้งค่าไว้ เพื่อให้มั่นใจว่าการใช้ LiveData ที่ได้ใน Jetpack Compose จะมีสถานะที่ถูกต้องในการคอมโพสครั้งแรก (I91d2b, b/269479952)
  • ViewModelของ addCloseable() จะปิด Closeable ทันทีหาก ViewModel ได้รับการเรียกใช้ onCleared() แล้ว (I4712e, b/280294730)

การแก้ไขข้อบกพร่อง

  • จากวงจร2.6.2: แก้ปัญหาที่ SavedStateHandle จะไม่ได้รับการกู้คืนอย่างถูกต้องหลังจากกระบวนการสิ้นสุดลงหากมีการกู้คืนสถานะ save() ถูกเรียกใช้โดยไม่ได้บันทึกสถานะใน SavedStateRegistry หลักจริง และจากนั้นมีการกู้คืนสถานะอีกครั้ง ซึ่งจะแก้ไขการโต้ตอบระหว่าง rememberSaveable กับ NavHost ของ Navigation Compose (aosp/2729289)

เวอร์ชัน 2.7.0-alpha01

26 กรกฎาคม 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha01 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • ตอนนี้ Lifecycle.State สามารถสังเกตได้ผ่าน Compose โดยใช้ Lifecycle.currentStateFlow ซึ่งจะแสดงผล StateFlow โดยที่ value คือ Lifecycle.State ปัจจุบัน (Ib212d, b/209684871)
  • Lifecycle.Events สามารถสังเกตได้ในรูปแบบ Flow ที่มี Lifecycle.asFlow(). (If2c0f, b/176311030)
  • LifecycleResumeEffect มีการเพิ่ม API เพื่อเรียกใช้ Compose SideEffect ตามทั้งการเรียกกลับของเหตุการณ์ Lifecycle.Event.ON_RESUME และ Lifecycle.Event.ON_PAUSE (I60386, b/235529345)
  • LifecycleStartEffect เพิ่ม API เพื่อเรียกใช้ Compose SideEffects ตามการเรียกกลับของเหตุการณ์ Lifecycle.Event.ON_START และ Lifecycle.Event.ON_STOP (I5a8d1, b/235529345)
  • เราได้เพิ่ม LifecycleEventEffect API เพื่อเรียกใช้ SideEffect Compose ตาม Lifecycle.Event (Ic9794, b/235529345)
  • เราได้เพิ่มส่วนขยาย Lifecycle.collectAsState() เพื่อแสดง Lifecycle.State โดยตรงเป็น Compose State ซึ่งเทียบเท่ากับ lifecycle.currentStateFlow.collectAsState() (และเป็นทางเลือกที่สั้นกว่า) (I11015, b/235529345)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ส่วนขยาย LiveData.distinctUntilChanged() จะตั้งค่า value ของ LiveData ที่แสดงผล หาก LiveData ก่อนหน้ามีการตั้งค่าไว้ การดำเนินการนี้จะไม่เปลี่ยนลักษณะการสังเกตการณ์ ค่าที่อัปเดตจากแหล่งที่มา LiveData จะมีผลเมื่อคุณเริ่มสังเกตการณ์ LiveData ที่ได้จาก distinctUntilChanged() เท่านั้น (Ib482f)
  • เราได้นำกฎ ProGuard Keep ที่เชื่อมโยงกับ LifecycleObserver ออกแล้ว ซึ่งหมายความว่าโค้ดที่ผ่านการป้องกันด้วย ProGuard ซึ่งต้องการใช้ API ผ่านการสะท้อนจะต้องระบุกฎการเก็บรักษาของตนเองสำหรับ Use Case ที่เฉพาะเจาะจง (Ia12fd)

เวอร์ชัน 2.6

เวอร์ชัน 2.6.2

6 กันยายน 2023

androidx.lifecycle:lifecycle-*:2.6.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.2 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ SavedStateHandle จะไม่ได้รับการกู้คืนอย่างถูกต้องหลังจากกระบวนการสิ้นสุดลงหากมีการกู้คืนสถานะ มีการเรียกใช้ save() โดยไม่ได้บันทึกสถานะใน SavedStateRegistry หลักจริง และจากนั้นมีการกู้คืนสถานะอีกครั้ง ซึ่งจะแก้ไขการโต้ตอบระหว่าง rememberSaveable กับ NavHost ของ Navigation Compose (aosp/2729289)

เวอร์ชัน 2.6.1

22 มีนาคม 2023

androidx.lifecycle:lifecycle-*:2.6.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.1 มีคอมมิตเหล่านี้

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

เวอร์ชัน 2.6.0

8 มีนาคม 2023

androidx.lifecycle:lifecycle-*:2.6.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.5.0

  • LiveData ตอนนี้มีพร็อพเพอร์ตี้ isInitialized ใหม่ที่ระบุว่ามีการตั้งค่าที่ชัดเจนใน LiveData หรือไม่ ซึ่งช่วยให้คุณแยกความแตกต่างระหว่าง liveData.value ที่แสดงผล null เนื่องจากไม่เคยมีการตั้งค่า หรือค่า null ที่ชัดเจน
  • MediatorLiveData มีตัวสร้างเพื่อตั้งค่าเริ่มต้นแล้ว
  • เพิ่มส่วนขยายใหม่ใน StateFlow และ Flow ของ collectAsStateWithLifecycle() ที่รวบรวมจากโฟลว์และแสดงค่าล่าสุดเป็น Compose State ในลักษณะที่รับรู้ถึงวงจร
  • เราได้เลิกใช้งานเมธอด Lifecycle.launchWhenX และเมธอด Lifecycle.whenX แล้ว เนื่องจากในบางกรณี การใช้ตัวจัดสรรที่หยุดชั่วคราวอาจทำให้สิ้นเปลืองทรัพยากร ขอแนะนำให้ใช้ Lifecycle.repeatOnLifecycle ดูข้อมูลเพิ่มเติมเกี่ยวกับการระงับงานแบบครั้งเดียวได้ที่คำอธิบายนี้เกี่ยวกับสาเหตุที่การระงับงานแบบครั้งเดียวไม่ปลอดภัย
  • การแปลง Kotlin - มีการแปลงคลาส Lifecycle จำนวนมากเป็น Kotlin ชั้นเรียนที่แปลงแล้วทั้งหมดจะยังคงมีความเข้ากันได้แบบไบนารีกับเวอร์ชันก่อนหน้า คลาสต่อไปนี้มีการเปลี่ยนแปลงที่แหล่งที่มาใช้ร่วมกันไม่ได้สำหรับคลาสที่เขียนใน Kotlin: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

ตารางด้านล่างแสดง Conversion จากแหล่งที่มาสำหรับวงจรลูกค้าเวอร์ชันใหม่

วงจร 2.5 วงจร 2.5 (KTX) วงจร 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • ตอนนี้ค่า Null ของเมธอด onChanged ของ Observer ที่สร้างใน Kotlin จะตรงกับค่า Null ของประเภททั่วไปแล้ว หากต้องการให้ Observer.onChanged() ยอมรับประเภทที่กำหนดให้เป็น Null ได้ คุณต้องสร้างอินสแตนซ์ของ Observer ด้วยประเภทที่กำหนดให้เป็น Null ได้
  • นอกจากนี้ เรายังแปลงคลาสเหล่านี้เป็น Kotlin แต่ยังคงความเข้ากันได้กับแหล่งที่มา ได้แก่ DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, ViewModelStore, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher และ ProcessLifecycleOwner

เวอร์ชัน 2.6.0-rc01

22 กุมภาพันธ์ 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-rc01 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ส่วนขยาย LiveData.distinctUntilChanged() จะตั้งค่า value ของ LiveData ที่แสดงผล หาก LiveData ก่อนหน้ามีการตั้งค่าไว้ การดำเนินการนี้จะไม่เปลี่ยนลักษณะการสังเกตการณ์ ค่าที่อัปเดตจากแหล่งที่มา LiveData จะมีผลเมื่อคุณเริ่มสังเกตการณ์ LiveData ที่ได้จาก distinctUntilChanged() เท่านั้น (Ib482f)

เวอร์ชัน 2.6.0-beta01

8 กุมภาพันธ์ 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-beta01 มีคอมมิตเหล่านี้

Conversion ของ Kotlin

  • ตอนนี้ LifecycleOwner เขียนด้วย Kotlin แล้ว นี่คือการเปลี่ยนแปลงที่แหล่งที่มาเข้ากันไม่ได้สำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้ต้องแทนที่พร็อพเพอร์ตี้ lifecycle แทนที่จะใช้ฟังก์ชัน getLifecycle() ก่อนหน้า (I75b4b, b/240298691)
  • ตอนนี้ ViewModelStoreOwner อยู่ใน Kotlin แล้ว นี่คือการเปลี่ยนแปลงที่แหล่งที่มาเข้ากันไม่ได้สำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้ต้องแทนที่พร็อพเพอร์ตี้ viewModelStore แทนที่จะใช้ฟังก์ชัน getViewModelStore() ก่อนหน้า (I86409, b/240298691)
  • ส่วนขยาย Kotlin ใน LifecycleOwner ที่มีฟิลด์ lifecycleScope ได้ย้ายจาก lifecycle-runtime-ktx ไปยังอาร์ติแฟกต์ lifecycle-common แล้ว (I41d78, b/240298691)
  • ส่วนขยาย Kotlin ใน Lifecycle ที่มีฟิลด์ coroutineScope ได้ย้ายจาก lifecycle-runtime-ktx ไปยังอาร์ติแฟกต์ lifecycle-common แล้ว (Iabb91, b/240298691)

เวอร์ชัน 2.6.0-alpha05

25 มกราคม 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha05 มีคอมมิตเหล่านี้

Conversion ของ Kotlin

  • ตอนนี้ Transformations เขียนด้วย Kotlin แล้ว การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งใช้ไวยากรณ์โดยตรง เช่น Transformations.map - ตอนนี้โค้ด Kotlin ต้องใช้ไวยากรณ์เมธอดส่วนขยาย Kotlin ซึ่งก่อนหน้านี้จะใช้ได้เมื่อใช้ lifecycle-livedata-ktx เท่านั้น เมื่อใช้ภาษาโปรแกรม Java ระบบจะเลิกใช้งานเวอร์ชันของเมธอดเหล่านี้ที่ใช้เมธอด androidx.arch.core.util.Function และแทนที่ด้วยเวอร์ชันที่ใช้ Function1 ของ Kotlin การเปลี่ยนแปลงนี้จะรักษาความเข้ากันได้ของไบนารี (I8e14f)
  • ตอนนี้ ViewTreeViewModelStoreOwner เขียนด้วย Kotlin แล้ว นี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้คุณต้องนำเข้าและใช้วิธีการขยาย Kotlin โดยตรงใน View ของ androidx.lifecycle.setViewTreeViewModelStoreOwner และ androidx.lifecycle.findViewTreeViewModelStoreOwner เพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งเข้ากันได้กับไบนารีและยังคงเข้ากันได้กับแหล่งที่มาสำหรับการใช้งานที่เขียนในภาษาโปรแกรม Java (Ia06d8, Ib22d8, b/240298691)
  • ตอนนี้อินเทอร์เฟซ HasDefaultViewModelProviderFactory เขียนด้วย Kotlin แล้ว นี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้ต้องลบล้างพร็อพเพอร์ตี้ defaultViewModelProviderFactory และ defaultViewModelCreationExtras แทนที่จะใช้ฟังก์ชันที่เกี่ยวข้องก่อนหน้านี้ (Iaed9c, b/240298691)
  • ตอนนี้ Observer เขียนด้วย Kotlin แล้ว ตอนนี้onChanged()เมธอดใช้ชื่อ value สำหรับพารามิเตอร์แล้ว (Iffef2, I4995e, b/240298691)
  • ตอนนี้ AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher และ ProcessLifecycleOwner เขียนด้วย Kotlin แล้ว (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

เวอร์ชัน 2.6.0-alpha04

11 มกราคม 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha04 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • LiveData ตอนนี้มีพร็อพเพอร์ตี้ isInitialized ใหม่ที่ระบุว่ามีการตั้งค่าที่ชัดเจนใน LiveData หรือไม่ ซึ่งช่วยให้คุณแยกความแตกต่างระหว่าง liveData.value ที่แสดงผล null เนื่องจากไม่เคยมีการตั้งค่า หรือค่า null ที่ชัดเจน (Ibd018)

การเปลี่ยนแปลง API

  • collectAsStateWithLifecycle() API ของ lifecycle-runtime-compose ไม่อยู่ในสถานะทดลองอีกต่อไป (I09d42, b/258835424)
  • เราได้เลิกใช้งานเมธอด Lifecycle.launchWhenX และเมธอด Lifecycle.whenX แล้ว เนื่องจากในบางกรณี การใช้ตัวจัดสรรที่หยุดชั่วคราวอาจทำให้สิ้นเปลืองทรัพยากร ขอแนะนำให้ใช้ Lifecycle.repeatOnLifecycle (Iafc54, b/248302832)

Conversion ของ Kotlin

  • ตอนนี้ ViewTreeLifecycleOwner เขียนด้วย Kotlin แล้ว นี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับคลาสที่เขียนใน Kotlin ซึ่งตอนนี้คุณต้องนำเข้าและใช้วิธีการขยาย Kotlin โดยตรงใน View ของ androidx.lifecycle.setViewTreeLifecycleOwner และ androidx.lifecycle.findViewTreeLifecycleOwner เพื่อตั้งค่าและค้นหาเจ้าของที่ตั้งค่าไว้ก่อนหน้านี้ ซึ่งจะแทนที่ส่วนขยาย Kotlin ก่อนหน้าใน lifecycle-runtime-ktx ซึ่งเข้ากันได้กับไบนารีและยังคงเข้ากันได้กับแหล่งที่มาสำหรับการใช้งานที่เขียนในภาษาโปรแกรม Java (I8a77a, I5234e, b/240298691)
  • ตอนนี้ LiveDataReactiveStreams เขียนด้วย Kotlin แล้ว ส่วนขยาย Kotlin ที่เคยอยู่ใน lifecycle-reactivestreams-ktx ได้ย้ายไปอยู่ในโมดูล lifecycle-reactivestreams แล้ว และกลายเป็นส่วนหลักสำหรับโค้ดที่เขียนด้วย Kotlin นี่คือการเปลี่ยนแปลงที่เข้ากันไม่ได้กับแหล่งที่มาสำหรับโค้ดที่เขียนใน Kotlin หากคุณยังไม่ได้ใช้ API ของเมธอดส่วนขยาย Kotlin (I2b1b9, I95d22, b/240298691)
  • ตอนนี้ DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver และ ViewModelStore เขียนด้วย Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)

การแก้ไขข้อบกพร่อง

  • SavedStateHandle จะไม่หยุดทำงานเมื่อใช้ ClassCastException ขณะเรียก get() ด้วยประเภทคลาสที่ไม่ถูกต้องอีกต่อไป (I6ae7c)

เวอร์ชัน 2.6.0-alpha03

24 ตุลาคม 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha03 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาข้อจำกัดระหว่างโมดูลวงจรที่แตกต่างกันไม่ทำงานตามที่ต้องการ (I18d0d, b/249686765)
  • ข้อผิดพลาดที่ LifecycleRegistry.moveToState() แสดงตอนนี้จะมีข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์มากขึ้น ซึ่งจะแจ้งให้นักพัฒนาแอปทราบถึงคอมโพเนนต์ที่ทำให้เกิดข้อผิดพลาด (Idf4b2, b/244910446)

เวอร์ชัน 2.6.0-alpha02

7 กันยายน 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • MediatorLiveData มีตัวสร้างเพื่อตั้งค่าเริ่มต้นแล้ว (Ib6cc5, b/151244085)

การแก้ไขข้อบกพร่อง

  • Lifecycle ตอนนี้อาร์ติแฟกต์มีข้อจำกัดที่ช่วยให้มั่นใจว่าอาร์ติแฟกต์วงจรการทำงานทั้งหมดที่ขึ้นต่อกันจะใช้เวอร์ชันเดียวกัน และอัปเกรดการขึ้นต่อกันอื่นๆ โดยอัตโนมัติเมื่อมีการอัปเกรดรายการใดรายการหนึ่ง b/242871265
  • FlowLiveData.asFlow() จะสร้าง callbackFlow แทนการใช้การติดตั้งใช้งาน Channel ของตัวเองเพื่อให้มั่นใจใน ความปลอดภัยของเธรดและการรักษาบริบท (I4a8b2, b/200596935)
  • ตอนนี้ฟังก์ชัน FlowLiveData's asLiveData จะเก็บค่าเริ่มต้นของ StateFlow ไว้เมื่อสร้างออบเจ็กต์ LiveData ใหม่ (I3f530, b/157380488)
  • จาก Lifecycle 2.5.1: การติดตั้งใช้งาน AndroidViewModelFactory ที่กำหนดเองจะเรียกฟังก์ชัน create(modelClass) อย่างถูกต้องเมื่อใช้ตัวสร้างที่มีสถานะกับ Lifecycle 2.4 ขึ้นไป (I5b315, b/238011621)

เวอร์ชัน 2.6.0-alpha01

29 มิถุนายน 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มส่วนขยายใหม่ใน StateFlow และ Flow ของ collectAsStateWithLifecycle ที่รวบรวมจากโฟลว์และแสดงค่าล่าสุดเป็นสถานะ Compose ในลักษณะที่รับรู้ถึงวงจร ระบบจะรวบรวมโฟลว์และตั้งค่าการปล่อยก๊าซใหม่เป็นค่าของรัฐเมื่อวงจรมีอายุอย่างน้อยตามLifecycle.Stateที่กำหนด เมื่อวงจรมีค่าต่ำกว่า Lifecycle.State ระบบจะหยุดรวบรวมโฟลว์และไม่อัปเดตค่าของสถานะ (I1856e, b/230557927)

เวอร์ชัน 2.5

เวอร์ชัน 2.5.1

27 กรกฎาคม 2022

androidx.lifecycle:lifecycle-*:2.5.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • การติดตั้งใช้งานที่กำหนดเองของ AndroidViewModelFactory จะเรียกใช้ฟังก์ชัน create(modelClass) อย่างถูกต้องเมื่อใช้ตัวสร้าง AndroidViewModelFactory แบบมีสถานะกับ Lifecycle 2.4 ขึ้นไป (I5b315, b/238011621)

เวอร์ชัน 2.5.0

29 มิถุนายน 2022

androidx.lifecycle:lifecycle-*:2.5.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.4.0

  • SavedStateHandle มี API getStateFlow() ที่แสดงผล Kotlin StateFlow สำหรับการตรวจสอบการเปลี่ยนแปลงค่าเพื่อเป็นทางเลือกแทนการใช้ LiveData

  • ViewModel CreationExtras - เมื่อเขียน ViewModelProvider.Factory ที่กำหนดเอง คุณไม่จำเป็นต้องขยาย AndroidViewModelFactory หรือ AbstractSavedStateViewModelFactory เพื่อเข้าถึง Application หรือ SavedStateHandle ตามลำดับอีกต่อไป แต่จะมีการระบุฟิลด์เหล่านี้ให้กับคลาสย่อย ViewModelProvider.Factory ทุกคลาสเป็น CreationExtras ผ่านการโอเวอร์โหลดใหม่ของ create: create(Class<T>, CreationExtras) โดยกิจกรรมหรือ Fragment จะระบุข้อมูลพิเศษเหล่านี้โดยอัตโนมัติเมื่อใช้ Activity 1.5.0 และ Fragment 1.5.0 ตามลำดับ

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • lifecycle-viewmodel มี viewModelFactory Kotlin DSL ที่ช่วยให้คุณกำหนด ViewModelProvider.Factory ในรูปของตัวเริ่มต้น Lambda อย่างน้อย 1 รายการ โดยมี 1 รายการสำหรับคลาส ViewModel แต่ละคลาสที่โรงงานที่กำหนดเองรองรับ โดยใช้ CreationExtras เป็นแหล่งข้อมูลหลัก

    val customFactory = viewModelFactory {
        // The return type of the lambda automatically sets what class this lambda handles
        initializer {
            // Get the Application object from extras provided to the lambda
            val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY))
            HomeViewModel(application)
        }
        initializer {
            val savedStateHandle = createSavedStateHandle()
            DetailViewModel(savedStateHandle)
        }
    }
    
  • lifecycle-viewmodel-compose มี viewModel() API ที่ใช้โรงงาน Lambda สำหรับสร้างอินสแตนซ์ ViewModel โดยไม่ต้องสร้าง ViewModelProvider.Factory ที่กำหนดเอง

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • การผสานรวมตัวบันทึก SavedStateHandle Compose - อาร์ติแฟกต์ lifecycle-viewmodel-compose มี API ทดลองใหม่ใน SavedStateHandle.saveable ซึ่งช่วยให้ rememberSaveable มีลักษณะการทำงานคล้ายกันโดยได้รับการสนับสนุนจาก SavedStateHandle ของ `ViewModel`

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • เพิ่ม addCloseable() API และการโอเวอร์โหลดตัวสร้างใหม่ที่ช่วยให้คุณเพิ่มออบเจ็กต์ Closeable อย่างน้อย 1 รายการลงใน ViewModel ที่จะปิดเมื่อล้าง ViewModel โดยไม่ต้องดำเนินการใดๆ ด้วยตนเองใน onCleared()

    เช่น หากต้องการสร้างขอบเขตของโครูทีนที่คุณสามารถแทรกลงใน ViewModel ได้ แต่ควบคุมผ่านการทดสอบ คุณสามารถสร้าง CoroutineScope ที่ใช้ Closeable ได้ดังนี้

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    ซึ่งจะใช้ในViewModelคอนสตรัคเตอร์ได้ในขณะที่ยังคงมีอายุการใช้งานเท่ากับ viewModelScope

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้การพยายามย้าย Lifecycle.State จาก INITIALIZED ไปยัง DESTROYED จะทำให้เกิด IllegalStateException เสมอ ไม่ว่า Lifecycle จะมีผู้สังเกตการณ์ที่แนบมาหรือไม่ก็ตาม
  • LifecycleRegistry จะล้างข้อมูลผู้สังเกตการณ์เมื่อถึงสถานะ DESTROYED

เวอร์ชัน 2.5.0-rc02

15 มิถุนายน 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-rc02 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ViewModelProvider จะไม่ขัดข้องอีกต่อไปเมื่อใช้การขึ้นต่อกันของ Lifecycle เวอร์ชันก่อนหน้าที่มี compileOnly ร่วมกับเวอร์ชัน 2.5 ขึ้นไป (I81a66, b/230454566)

เวอร์ชัน 2.5.0-rc01

11 พฤษภาคม 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-rc01 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • MediatorLiveData.addSource() จะแสดง NullPointerException เมื่อส่งแหล่งที่มา null แทนที่จะส่งต่อแหล่งที่มา null ไปยังผู้สังเกตการณ์(Ibd0fb, b/123085232)

เวอร์ชัน 2.5.0-beta01

20 เมษายน 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มผู้มอบสิทธิ์พร็อพเพอร์ตี้ SavedStateHandle.saveable เพื่อใช้ชื่อพร็อพเพอร์ตี้เป็นคีย์สําหรับการคงสถานะไว้ใน SavedStateHandle (I8bb86, b/225014345)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การซ้อน NavHost รายการหนึ่งไว้ภายในอีกรายการหนึ่งNavHostในแท็บการนำทางด้านล่างที่ไม่ใช่แท็บหลักจะทำให้เกิด IllegalStateException เมื่อใช้สแต็กย้อนกลับหลายรายการ (I11bd5, b/228865698)

เวอร์ชัน 2.5.0-alpha06

6 เมษายน 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha06 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการโอเวอร์โหลด MutableState ที่เป็นเวอร์ชันทดลองไปยัง SavedStateHandle.saveable เพื่อให้เทียบเท่ากับ rememberSaveable (I38cfe, b/224565154)

การเปลี่ยนแปลง API

  • ตอนนี้ CreationExtras เป็นแบบแอบสแทรกต์แทนที่จะเป็นแบบซีล (Ib8a7a)

การแก้ไขข้อบกพร่อง

  • แก้ไขIllegalStateException: Already attached to lifecycleOwnerข้อผิดพลาดที่เกิดจากSavedStateHandleController (I7ea47, b/215406268)

เวอร์ชัน 2.5.0-alpha05

23 มีนาคม 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha05 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • ตอนนี้โมดูล lifecycle-viewmodel-compose มี SavedStateHandleSaver ซึ่งเป็น API เวอร์ชันทดลองที่ช่วยให้มั่นใจได้ว่าค่าใน SavedStateHandle จะผสานรวมอย่างถูกต้องกับสถานะอินสแตนซ์ที่บันทึกไว้เดียวกันกับที่ rememberSaveable ใช้ (Ia88b7, b/195689777)

การเปลี่ยนแปลง API

  • แก้ไขปัญหาความเข้ากันได้กับ Lifecycle 2.3 และ Lifecycle เวอร์ชันใหม่กว่าใน Java (I52c8a, b/219545060)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ SavedStateViewFactory รองรับการใช้ CreationExtras แล้วแม้ว่าจะเริ่มต้นด้วย SavedStateRegistryOwner ก็ตาม หากมีการระบุส่วนเสริม ระบบจะไม่สนใจอาร์กิวเมนต์ที่เริ่มต้น (I6c43b, b/224844583)

เวอร์ชัน 2.5.0-alpha04

9 มีนาคม 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha04 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • SavedStateHandle มี getStateFlow() API ที่แสดงผล Kotlin StateFlow สำหรับการตรวจสอบการเปลี่ยนแปลงค่าเป็นทางเลือกแทนการใช้ LiveData (Iad3ab, b/178037961)

เวอร์ชัน 2.5.0-alpha03

23 กุมภาพันธ์ 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม addCloseable() API และการโอเวอร์โหลดตัวสร้างใหม่ ที่ช่วยให้คุณเพิ่มออบเจ็กต์ Closeable อย่างน้อย 1 รายการลงใน ViewModel ที่จะปิดเมื่อล้าง ViewModel โดยไม่ต้องดำเนินการใดๆ ด้วยตนเองใน onCleared() (I55ea0)
  • ตอนนี้ lifecycle-viewmodel มี InitializerViewModelFactory ที่ช่วยให้คุณเพิ่ม Lambda เพื่อจัดการคลาส ViewModel ที่เฉพาะเจาะจงได้ โดยใช้ CreationExtras เป็นแหล่งข้อมูลหลัก (If58fc, b/216687549)
  • lifecycle-viewmodel-compose มี API viewModel() ที่ ใช้โรงงาน Lambda เพื่อสร้างอินสแตนซ์ ViewModel โดยไม่ต้อง สร้าง ViewModelProvider.Factory ที่กำหนดเอง (I97fbb, b/216688927)

การเปลี่ยนแปลง API

  • ตอนนี้คุณสร้าง ViewModel กับ CreationExtras ผ่าน lifecycle-viewmodel-compose ได้แล้ว (I08887, b/216688927)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้การพยายามย้าย Lifecycle.State จาก INITIALIZED ไปยัง DESTROYED จะทำให้เกิด IllegalStateException เสมอไม่ว่าLifecycle จะมีผู้สังเกตการณ์ที่แนบมาหรือไม่ก็ตาม (I7c390, b/177924329)
  • LifecycleRegistry จะล้างข้อมูลผู้สังเกตการณ์เมื่อเข้าสู่สถานะ DESTROYED (I4f8dd, b/142925860)

เวอร์ชัน 2.5.0-alpha02

9 กุมภาพันธ์ 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • SavedStateHandle และ SavedStateViewModelFactory ได้รับการแปลงเป็น Kotlin แล้ว ซึ่งช่วยปรับปรุงความสามารถในการเป็นค่าว่างของ Generics ในทั้ง 2 คลาส (Ib6ce2, b/216168263, I9647a, b/177667711)
  • พารามิเตอร์ฟังก์ชัน LiveData switchMap สามารถ มีเอาต์พุตที่ยอมรับค่า Null ได้แล้ว (I40396, b/132923666)
  • ตอนนี้ระบบจะใส่คำอธิบายประกอบ LiveData -ktx ด้วย @CheckResult เพื่อบังคับให้ใช้ผลลัพธ์เมื่อเรียกใช้ฟังก์ชัน เหล่านี้ (Ia0f05, b/207325134)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ SavedStateHandle จะจัดเก็บ defaultValue อย่างถูกต้องเมื่อ ไม่มีค่าสำหรับคีย์ที่ระบุ (I1c6ce, b/178510877)

การแก้ไขข้อบกพร่อง

  • จากวงจรการใช้งาน2.4.1: อัปเดต lifecycle-process ให้ขึ้นอยู่กับ Startup 1.1.1 เพื่อให้แน่ใจว่าการแก้ไขที่ป้องกันไม่ให้ ProcessLifecycleInitializer แสดง StartupException จะพร้อมใช้งานโดยค่าเริ่มต้น (Ib01df, b/216490724)
  • ตอนนี้คุณจะเห็นข้อความแสดงข้อผิดพลาดที่ได้รับการปรับปรุงเมื่อAndroidViewModelคลาสที่กำหนดเองมี พารามิเตอร์ในลำดับที่ไม่ถูกต้องและพยายามสร้าง ViewModel (I340f7, b/177667711)
  • ตอนนี้คุณสร้างโมเดลมุมมองผ่าน CreationExtras โดยใช้ AndroidViewModelFactory ได้แล้วโดยไม่ต้องตั้งค่าแอปพลิเคชัน (I6ebef, b/217271656)

เวอร์ชัน 2.5.0-alpha01

26 มกราคม 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha01 มีคอมมิตเหล่านี้

ViewModel CreationExtras

การเปิดตัวนี้เป็นการวางรากฐานสำหรับการปรับโครงสร้างวิธีสร้างViewModel แทนที่จะใช้ชุดคลาสย่อยของ ViewModelProvider.Factory ที่แต่ละคลาสเพิ่มฟังก์ชันการทำงานเพิ่มเติม (อนุญาตพารามิเตอร์ของตัวสร้าง Application ผ่าน AndroidViewModelFactory, อนุญาตพารามิเตอร์ของตัวสร้าง SavedStateHandle ผ่าน SavedStateViewModelFactory และ AbstractSavedStateViewModelFactory ฯลฯ) เรากำลังเปลี่ยนไปใช้โรงงานแบบไม่เก็บสถานะที่ใช้แนวคิดใหม่ นั่นคือ CreationExtras (Ia7343, b/188691010, b/188541057)

การเปลี่ยนแปลงนี้ทำให้ ViewModelProvider ไม่ได้เรียกใช้เมธอด create(Class<T>) ของ ViewModelProvider.Factory โดยตรงอีกต่อไป แต่จะเรียกใช้โอเวอร์โหลดใหม่ของ create: create(Class<T>, CreationExtras) แทน ซึ่งหมายความว่าการติดตั้งใช้งาน ViewModelProvider.Factory โดยตรงจะเข้าถึง CreationExtras ใหม่แต่ละรายการต่อไปนี้ได้

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: String นี้ให้สิทธิ์เข้าถึงคีย์ที่กำหนดเองที่คุณส่งไปยัง ViewModelProvider.get()
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY ให้สิทธิ์เข้าถึงชั้นเรียน Application
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY ให้สิทธิ์เข้าถึง SavedStateRegistryOwner ที่ใช้สร้าง ViewModel นี้
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY ให้สิทธิ์เข้าถึง ViewModelStoreOwner ที่ใช้สร้าง ViewModel นี้
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY ให้สิทธิ์เข้าถึง Bundle ของอาร์กิวเมนต์ที่ควรใช้เพื่อสร้าง SavedStateHandle

ระบบจะระบุข้อมูลพิเศษเหล่านี้โดยค่าเริ่มต้นเมื่อใช้ Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01 และ Navigation 2.5.0-alpha01 หากคุณใช้ไลบรารีเวอร์ชันก่อนหน้า CreationExtras จะว่างเปล่า เนื่องจากเราได้เขียนคลาสย่อยทั้งหมดของ ViewModelProvider.Factory ใหม่เพื่อรองรับทั้งเส้นทางการสร้างเดิมที่ใช้โดยไลบรารีเวอร์ชันก่อนหน้าและเส้นทาง CreationExtras ที่จะใช้ต่อไป

CreationExtras เหล่านี้ช่วยให้คุณสร้าง ViewModelProvider.Factory ที่ส่งเฉพาะข้อมูลที่ต้องการไปยัง ViewModel แต่ละรายการได้โดยไม่ต้องอาศัยลำดับชั้นที่เข้มงวดของคลาสย่อย Factory

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

เราใช้createSavedStateHandle()ฟังก์ชันส่วนขยาย Kotlin ใน CreationExtras จาก SavedStateHandleSupport เพื่อสร้าง SavedStateHandle สำหรับ ViewModel เพียงรายการเดียวที่ต้องการใช้ (Ia6654, b/188541057)

คุณสามารถระบุ CreationExtras ที่กำหนดเองได้โดยการลบล้าง getDefaultViewModelCreationExtras() ใน ComponentActivity หรือ Fragment ซึ่งจะทำให้ CreationExtras ที่กำหนดเองพร้อมใช้งานในรูปแบบของการแทรกที่ได้รับความช่วยเหลือViewModelProvider.Factory ระบบจะทำให้ส่วนเสริมเหล่านี้พร้อมใช้งานใน Factory ที่กำหนดเองโดยอัตโนมัติเมื่อใช้กับ ViewModelProvider โดยตรง หรือเมื่อใช้ส่วนขยายพร็อพเพอร์ตี้ by viewModels() และ by activityViewModels() Kotlin (I79f2b, b/207012584, b/207012585, b/207012490)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ค่าเริ่มต้นที่ระบุ ให้กับ SavedStateHandle จะปรากฏอีกครั้งหลังจากกระบวนการ สิ้นสุดและสร้างใหม่ แม้ว่าจะมีการนำออกจาก SavedStateHandle โดยเฉพาะก็ตาม ด้วยเหตุนี้ SavedStateHandle จะไม่ผสานค่าเริ่มต้นและค่าที่กู้คืนเข้าด้วยกันอีกต่อไป แต่จะใช้เฉพาะค่าที่กู้คืนเป็นแหล่งข้อมูลที่เชื่อถือได้ (I53a4b)

เวอร์ชัน 2.4

เวอร์ชัน 2.4.1

9 กุมภาพันธ์ 2022

androidx.lifecycle:lifecycle-*:2.4.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.1 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • ย้อนกลับจาก Lifecycle 2.5.0-alpha01: แก้ไขปัญหาที่ค่าเริ่มต้นที่ระบุ ใน SavedStateHandle จะปรากฏอีกครั้งหลังจากกระบวนการ สิ้นสุดและสร้างใหม่ แม้ว่าจะนำออกจาก SavedStateHandle โดยเฉพาะแล้วก็ตาม ด้วยเหตุนี้ SavedStateHandle จะไม่ผสานค่าเริ่มต้นและค่าที่กู้คืนเข้าด้วยกันอีกต่อไป แต่จะใช้เฉพาะค่าที่กู้คืนเป็นแหล่งข้อมูลที่เชื่อถือได้ (I53a4b)
  • lifecycle-process ตอนนี้ขึ้นอยู่กับ Androidx Startup 1.1.1 ซึ่งแก้ไขการถดถอยที่การใช้ ProcessLifecycleInitializer จะทำให้เกิด StartupException (b/216490724)

เวอร์ชัน 2.4.0

27 ตุลาคม 2021

androidx.lifecycle:lifecycle-*:2.4.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.3.0

  • @OnLifecycleEvent ถูกเลิกใช้งานแล้ว ควรใช้ LifecycleEventObserver หรือ DefaultLifecycleObserver แทน
  • เพิ่มไลบรารี androidx.lifecycle:lifecycle-viewmodel-compose แล้ว โดยมี viewModel() ที่ประกอบได้และ LocalViewModelStoreOwner
    • การเปลี่ยนแปลงที่ทำให้แหล่งที่มาใช้งานไม่ได้: ViewModelProvider ได้รับการเขียนใหม่ใน Kotlin เมธอด ViewModelProvider.Factory.create ไม่อนุญาตให้ใช้ Generics ที่เป็น Null ได้อีกต่อไป
  • เราได้เพิ่ม API ของโครูทีนใหม่ลงใน androidx.lifecycle:lifecycle-runtime-ktx ดังนี้
  • Lifecycle.repeatOnLifecycle, API ที่เรียกใช้บล็อกโค้ดในโครูทีนเมื่อ Lifecycle อยู่ในสถานะใดสถานะหนึ่งเป็นอย่างน้อย บล็อกจะยกเลิกและเปิดตัวอีกครั้งเมื่อวงจรเปลี่ยนเข้าและออกจากสถานะเป้าหมาย
  • Flow.flowWithLifecycle, API ที่ปล่อยค่าจาก Flow ต้นทางเมื่อวงจรมีสถานะอย่างน้อยในสถานะหนึ่ง
  • ย้าย DefaultLifecycleObserver จาก lifecycle.lifecycle-common-java8 ไปที่ lifecycle.lifecycle-common แล้ว lifecycle.lifecycle-common-java8 ไม่ได้ให้ฟังก์ชันการทำงานเพิ่มเติมใดๆ นอกเหนือจาก lifecycle.lifecycle-common อีกต่อไป ดังนั้นการพึ่งพา lifecycle.lifecycle-common-java8 จึงสามารถแทนที่ได้ด้วย lifecycle.lifecycle-common
  • API ที่ไม่ใช่โครูทีนจาก lifecycle-viewmodel-ktx ได้ย้ายไปอยู่ที่โมดูล lifecycle-viewmodel แล้ว
  • ตอนนี้ lifecycle-process ใช้ androidx.startup เพื่อเริ่มต้น ProcessLifecycleOwner

    ก่อนหน้านี้ androidx.lifecycle.ProcessLifecycleOwnerInitializer เป็นผู้ดำเนินการนี้

    หากคุณเคยใช้ tools:node="remove" ContentProvider เพื่อเริ่มต้น วงจรของกระบวนการในอดีต คุณจะต้องทำดังนี้แทน

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (หรือ)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

เวอร์ชัน 2.4.0-rc01

29 กันยายน 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก Lifecycle 2.4.0-beta01 เวอร์ชัน 2.4.0-rc01 มีคอมมิตต่อไปนี้

เวอร์ชัน 2.4.0-beta01

15 กันยายน 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • @OnLifecycleEvent ถูกเลิกใช้งานแล้ว ควรใช้ LifecycleEventObserver หรือ DefaultLifecycleObserver แทน (I5a8fa)
  • ย้าย DefaultLifecycleObserver จาก androidx.lifecycle.lifecycle-common-java8 ไปยัง androidx.lifecycle.lifecycle-common แล้ว androidx.lifecycle.lifecycle-common-java8 ไม่ได้ให้ฟังก์ชันการทำงานเพิ่มเติมใดๆ นอกเหนือจาก androidx.lifecycle.lifecycle-common อีกต่อไป ดังนั้นจึงสามารถแทนที่การอ้างอิง androidx.lifecycle.lifecycle-common-java8 ด้วย androidx.lifecycle.lifecycle-common ได้ (I021aa)
  • API ที่ไม่ใช่โครูทีนจาก lifecycle-viewmodel-ktx ได้ย้ายไปอยู่ที่โมดูล lifecycle-viewmodel แล้ว (I6d5b2)

การมีส่วนร่วมภายนอก

  • ขอขอบคุณ dmitrilc ที่แก้ไขข้อผิดพลาดในการพิมพ์ในเอกสารประกอบของ ViewModel (#221)

เวอร์ชัน 2.4.0-alpha03

4 สิงหาคม 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • การเปลี่ยนแปลงที่ทำให้แหล่งที่มาใช้งานไม่ได้: เราได้เขียน ViewModelProvider ใหม่ใน Kotlin เมธอด ViewModelProvider.Factory.create ไม่อนุญาตให้ใช้ค่าทั่วไปที่ยอมรับค่า Null ได้อีกต่อไป (I9b9f6)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ระบบจะเรียกใช้ Lifecycle.repeatOnLifecycle: block แบบอนุกรมเสมอเมื่อมีการเรียกใช้ซ้ำ (Ibab33)

การมีส่วนร่วมภายนอก

  • ขอขอบคุณ chao2zhang ที่แก้ไขข้อมูลโค้ดในเอกสารประกอบของ repeatOnLifecycle #205

เวอร์ชัน 2.4.0-alpha02

16 มิถุนายน 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มRepeatOnLifecycleWrongUsageการตรวจสอบ Lint ใหม่ใน lifecycle-runtime-ktx ซึ่งจะตรวจหาเมื่อมีการใช้ repeateOnLifecycle อย่างไม่ถูกต้องใน onStart() หรือ onResume() (706078, b/187887400)

การเปลี่ยนแปลง API

  • เราได้นำ LifecycleOwner.addRepeatingJob API ออกเพื่อแทนที่ด้วย Lifecycle.repeatOnLifecycle ซึ่งรองรับการทำงานพร้อมกันที่มีโครงสร้างและเข้าใจได้ง่ายกว่า (I4a3a8)
  • ตั้งค่า ProcessLifecycleInitializer เป็นสาธารณะเพื่อให้ androidx.startup.Initializer อื่นๆ ใช้เป็นทรัพยากร Dependency ได้ (I94c31)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเกี่ยวกับNullSafeMutableLiveDataการตรวจสอบ Lint เมื่อฟิลด์มีตัวแก้ไข (#147, b/183696616)
  • แก้ไขปัญหาอีกอย่างเกี่ยวกับการตรวจสอบ Lint ของ NullSafeMutableLiveData เมื่อใช้ Generics (#161, b/184830263)

การมีส่วนร่วมภายนอก

  • ขอขอบคุณ maxsav ที่ช่วยปรับปรุงNullSafeMutableLiveDataการตรวจสอบ Lint (#147, b/183696616)
  • ขอขอบคุณ kozaxinan ที่ช่วยปรับปรุงNullSafeMutableLiveDataการตรวจสอบ Lint (#161, b/184830263)

เวอร์ชัน 2.4.0-alpha01

24 มีนาคม 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-alpha01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ lifecycle-process ใช้ androidx.startup เพื่อเริ่มต้น ProcessLifecycleOwner

    ก่อนหน้านี้ androidx.lifecycle.ProcessLifecycleOwnerInitializer เป็นผู้ดำเนินการนี้

    หากคุณเคยใช้ tools:node="remove" ContentProvider เพื่อเริ่มต้น วงจรของกระบวนการในอดีต คุณจะต้องทำดังนี้แทน

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (หรือ)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

การเปลี่ยนแปลง API

  • เพิ่ม Flow.flowWithLifecycle API ที่ปล่อยค่าจาก Flow ต้นทางเมื่อวงจรมีสถานะอย่างน้อยในสถานะหนึ่งโดยใช้ Lifecycle.repeatOnLifecycle API ซึ่งเป็นอีกทางเลือกหนึ่งแทน LifecycleOwner.addRepeatinJob API ที่เพิ่งเปิดตัว (I0f4cd)

การแก้ไขข้อบกพร่อง

  • จาก Lifecycle 2.3.1: ตอนนี้ NonNullableMutableLiveData lint rule สามารถแยกความแตกต่างระหว่างตัวแปรฟิลด์ที่มีค่า Null ได้อย่างถูกต้อง (b/169249668)

Lifecycle Viewmodel Compose เวอร์ชัน 1.0.0

เวอร์ชัน 1.0.0-alpha07

16 มิถุนายน 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API ที่ทำให้เกิดข้อผิดพลาด

  • ตอนนี้ viewModel() จะมี ViewModelStoreOwner เป็นตัวเลือก ซึ่งช่วยให้ทำงานร่วมกับเจ้าของคนอื่นๆ ที่ไม่ใช่LocalViewModelStoreOwner ได้ง่ายขึ้น เช่น ตอนนี้คุณใช้ viewModel(navBackStackEntry) เพื่อดึงข้อมูล ViewModel ที่เชื่อมโยงกับกราฟการนำทางที่เฉพาะเจาะจงได้แล้ว (I2628d, b/188693123)

เวอร์ชัน 1.0.0-alpha06

2 มิถุนายน 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้

อัปเดตให้เข้ากันได้กับ Compose เวอร์ชัน 1.0.0-beta08

เวอร์ชัน 1.0.0-alpha05

18 พฤษภาคม 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • อัปเดตให้เข้ากันได้กับ Compose เวอร์ชัน 1.0.0-beta07

การแก้ไขข้อบกพร่อง

  • ตอนนี้ไฟล์ AndroidManifest จาก ui-test-manifest และ ui-tooling-data เข้ากันได้กับ Android 12 แล้ว (I6f9de, b/184718994)

เวอร์ชัน 1.0.0-alpha04

7 เมษายน 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงการขึ้นต่อกัน

  • เวอร์ชันนี้ช่วยให้ androidx.hilt:hilt-navigation-compose และ androidx.navigation:navigation-compose ซิงค์ทรัพยากร Dependency ใน androidx.compose.compiler:compiler:1.0.0-beta04 และ androidx.compose.runtime:runtime:1.0.0-beta04 ได้ สำหรับ 1.0.0 คอมไพเลอร์และรันไทม์จะต้องตรงกัน

เวอร์ชัน 1.0.0-alpha03

10 มีนาคม 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • LocalViewModelStoreOwner.current จะแสดงผล ViewModelStoreOwner ที่อนุญาตให้เป็น Null ได้เพื่อระบุได้ดียิ่งขึ้นว่ามี ViewModelStoreOwner ในองค์ประกอบปัจจุบันหรือไม่ API ที่ต้องใช้ ViewModelStoreOwner เช่น viewModel() และ NavHost จะยังคงแสดงข้อยกเว้น หากไม่ได้ตั้งค่า ViewModelStoreOwner (Idf39a)

Lifecycle-Viewmodel-Compose เวอร์ชัน 1.0.0-alpha02

24 กุมภาพันธ์ 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • LocalViewModelStoreOwner มีฟังก์ชัน provides ที่ใช้กับ CompositionLocalProvider ได้แล้ว ซึ่งจะมาแทนที่ asProvidableCompositionLocal() API (I45d24)

Lifecycle-Viewmodel-Compose เวอร์ชัน 1.0.0-alpha01

10 กุมภาพันธ์ 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • ระบบได้ย้าย viewModel() ที่ประกอบได้และ LocalViewModelStoreOwner จาก androidx.compose.ui.viewinterop ไปยังอาร์ติแฟกต์นี้ในแพ็กเกจ androidx.lifecycle.viewmodel.compose (I7a374)

เวอร์ชัน 2.3.1

Lifecycle เวอร์ชัน 2.3.1

24 มีนาคม 2021

androidx.lifecycle:lifecycle-*:2.3.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้NonNullableMutableLiveDataกฎ Lint สามารถแยกความแตกต่างระหว่างตัวแปรฟิลด์ที่มีค่า Null ได้อย่างถูกต้อง (b/169249668)

เวอร์ชัน 2.3.0

เวอร์ชัน 2.3.0

10 กุมภาพันธ์ 2021

androidx.lifecycle:lifecycle-*:2.3.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.2.0

  • SavedStateHandle รองรับคลาสที่ไม่ใช่ Parcelable: ตอนนี้ SavedStateHandle รองรับการซีเรียลไลซ์แบบเลซี่โดยอนุญาตให้คุณเรียกใช้ setSavedStateProvider() สำหรับคีย์ที่กำหนด ซึ่งจะให้ SavedStateProvider ที่จะรับการเรียกกลับไปยัง saveState() เมื่อระบบขอให้ SavedStateHandle บันทึกสถานะ ดูการบันทึกคลาสที่ส่งไม่ได้
  • การบังคับใช้พฤติกรรมตามวงจร
    • ตอนนี้ LifecycleRegistry จะบังคับใช้ DESTROYED เป็นสถานะสิ้นสุด
    • LifecycleRegistry ตอนนี้จะยืนยันว่ามีการเรียกใช้เมธอดในเทรดหลัก ซึ่งเป็นข้อกำหนดสำหรับวงจรของกิจกรรม Fragment ฯลฯ เสมอ การเพิ่ม Observer จากเธรดที่ไม่ใช่เธรดหลักทำให้เกิดข้อขัดข้องที่จับได้ยากในรันไทม์ สำหรับLifecycleRegistryออบเจ็กต์ที่เป็นของคอมโพเนนต์ของคุณเอง คุณสามารถเลือกไม่รับการตรวจสอบอย่างชัดแจ้งได้โดยใช้ LifecycleRegistry.createUnsafe(...) แต่คุณต้องตรวจสอบว่ามีการซิงค์ที่เหมาะสมเมื่อมีการเข้าถึง LifecycleRegistry นี้จากเธรดต่างๆ
  • เครื่องมือช่วยสถานะวงจรและเหตุการณ์: เพิ่มเมธอดเครื่องมือช่วยแบบคงที่ของ downFrom(State), downTo(State), upFrom(State), upTo(State) ไปยัง Lifecycle.Event เพื่อสร้าง Event เมื่อกำหนด State และทิศทางการเปลี่ยน เพิ่มเมธอด getTargetState() ที่ให้ State ซึ่งวงจรจะเปลี่ยนไปใช้โดยตรงหลังจาก Event
  • withStateAtLeast: เพิ่ม API Lifecycle.withStateAtLeast ที่รอสถานะวงจร และเรียกใช้บล็อกโค้ดที่ไม่ระงับแบบพร้อมกัน ณ จุดที่มีการเปลี่ยนแปลงสถานะ แล้วดำเนินการต่อด้วยผลลัพธ์ API เหล่านี้แตกต่างจากwhen*เมธอดที่มีอยู่เนื่องจากไม่อนุญาตให้เรียกใช้โค้ดที่ระงับและไม่ได้ใช้ตัวจัดส่งที่กำหนดเอง (aosp/1326081)
  • ViewTree API: ViewTreeLifecycleOwner.get(View) และ ViewTreeViewModelStoreOwner.get(View) API ใหม่ช่วยให้คุณดึงข้อมูล LifecycleOwner และ ViewModelStoreOwner ที่มีได้ตามลำดับ เมื่อระบุอินสแตนซ์ View คุณต้องอัปเกรดเป็น Activity 1.2.0 และ Fragment 1.3.0 รวมถึง AppCompat 1.3.0-alpha01 ขึ้นไปเพื่อป้อนข้อมูลนี้อย่างถูกต้อง ส่วนขยาย Kotlin ของ findViewTreeLifecycleOwner และ findViewTreeViewModelStoreOwner พร้อมใช้งานใน lifecycle-runtime-ktx และ lifecycle-viewmodel-ktx ตามลำดับ
  • LiveData.observe() การเลิกใช้งานส่วนขยาย Kotlin: ตอนนี้เราเลิกใช้งานส่วนขยาย Kotlin LiveData.observe() ที่จำเป็นต่อการใช้ไวยากรณ์ Lambda แล้ว เนื่องจากไม่จำเป็นเมื่อใช้ Kotlin 1.4

เวอร์ชัน 2.3.0-rc01

16 ธันวาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-rc01 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ตอนนี้ keys() เมธอดของ SavedStateHandle จะสอดคล้องกันทั้งก่อนและหลังการบันทึกสถานะ โดยตอนนี้จะรวมคีย์ที่เคยใช้กับ setSavedStateProvider() นอกเหนือจากคีย์ที่ใช้กับ set() และ getLiveData() (aosp/1517919, b/174713653)

การมีส่วนร่วมภายนอก

เวอร์ชัน 2.3.0-beta01

1 ตุลาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้เราเลิกใช้งานLiveData.observe()ส่วนขยาย Kotlin ที่จำเป็นต่อการใช้ไวยากรณ์ Lambda แล้ว เนื่องจากไม่จำเป็นเมื่อใช้ Kotlin 1.4 (I40d3f)

การแก้ไขข้อบกพร่อง

การเปลี่ยนแปลงเอกสาร

  • เราได้อัปเดตliveDataเครื่องมือสร้างและเอกสารasLiveData()เพื่อให้มีรายละเอียดเกี่ยวกับการเปลี่ยนค่าการหมดเวลาที่ระบุ (aosp/1122324)

เวอร์ชัน 2.3.0-alpha07

19 สิงหาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha07 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาการขัดข้องในNullSafeMutableLiveDataการตรวจสอบ Lint (aosp/1395367)

เวอร์ชัน 2.3.0-alpha06

22 กรกฎาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha06 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มเมธอดตัวช่วยแบบคงที่ของ downFrom(State), downTo(State), upFrom(State), upTo(State) ลงใน Lifecycle.Event เพื่อสร้าง Event เมื่อกำหนด State และทิศทางการเปลี่ยน เพิ่มเมธอด getTargetState() ที่ให้ State ซึ่งวงจรจะเปลี่ยนไปใช้โดยตรงหลังจาก Event (I00887)
  • เพิ่ม Lifecycle.withStateAtLeast API ที่รอสถานะวงจรและเรียกใช้บล็อกโค้ดที่ไม่ระงับแบบซิงโครนัส ณ จุดที่มีการเปลี่ยนแปลงสถานะ จากนั้นจะกลับมาทำงานต่อ พร้อมผลลัพธ์ API เหล่านี้แตกต่างจากwhen*เมธอดที่มีอยู่เนื่องจากไม่อนุญาตให้เรียกใช้โค้ดที่ระงับและไม่ได้ใช้ตัวจัดส่งที่กำหนดเอง (aosp/1326081)

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้ LifecycleRegistry จะบังคับใช้ DESTROYED เป็นสถานะสิ้นสุด (I00887)
  • LifecycleRegistry ตอนนี้จะยืนยันว่ามีการเรียกใช้เมธอดในเทรดหลัก ซึ่งเป็นข้อกำหนดสำหรับวงจรของกิจกรรม Fragment ฯลฯ เสมอ การเพิ่ม Observer จากเธรดที่ไม่ใช่เธรดหลักทำให้เกิดข้อขัดข้องที่จับได้ยากในรันไทม์ สำหรับออบเจ็กต์ LifecycleRegistry ที่เป็นของคอมโพเนนต์ของคุณเอง คุณสามารถเลือกไม่รับการตรวจสอบอย่างชัดแจ้งได้โดยใช้ LifecycleRegistry.createUnsafe(...) แต่คุณต้องตรวจสอบว่ามีการซิงค์ที่เหมาะสมเมื่อเข้าถึง LifecycleRegistry นี้จากเธรดต่างๆ (Ie7280, b/137392809)

การแก้ไขข้อบกพร่อง

  • แก้ไขการขัดข้องใน NullSafeMutableLiveData (b/159987480)
  • แก้ไขObsoleteLintCustomCheckสำหรับการตรวจสอบ Lint ที่มาพร้อมกับ lifecycle-livedata-core-ktx (และโดยเฉพาะ NullSafeMutableLiveData) (b/158699265)

เวอร์ชัน 2.3.0-alpha05

24 มิถุนายน 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha05 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • LiveData จัดการเคสที่เรียกซ้ำได้ดีขึ้นแล้วในตอนนี้ เพื่อหลีกเลี่ยงการเรียก onActive() หรือ onInactive() ซ้ำ (b/157840298)
  • แก้ไขปัญหาที่การตรวจสอบด้วยเครื่องมือวิเคราะห์ซอร์สโค้ดไม่ทำงานเมื่อใช้ Android Studio 4.1 Canary 6 ขึ้นไป (aosp/1331903)

เวอร์ชัน 2.3.0-alpha04

10 มิถุนายน 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha04 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • แก้ไขการขัดข้องในการNonNullableMutableLiveDataตรวจสอบ Lint (b/157294666)
  • NonNullableMutableLiveData การตรวจสอบ Lint ครอบคลุมกรณีต่างๆ มากขึ้นอย่างเห็นได้ชัดในตอนนี้ ซึ่งมีการตั้งค่า null ใน MutableLiveData ที่มีพารามิเตอร์ประเภทที่ไม่ใช่ Null (b/156002218)

เวอร์ชัน 2.3.0-alpha03

20 พฤษภาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 ได้รับการเผยแพร่ เวอร์ชัน 2.3.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • SavedStateHandle รองรับการซีเรียลไลซ์แบบเลซี่แล้ว โดยให้คุณเรียกใช้ setSavedStateProvider() สำหรับคีย์ที่ต้องการได้ ซึ่งจะให้ SavedStateProvider ที่จะรับการเรียกกลับไปยัง saveState() เมื่อระบบขอให้ SavedStateHandle บันทึกสถานะ (b/155106862)
  • ViewTreeViewModelStoreOwner.get(View) API ใหม่ช่วยให้คุณดึงข้อมูล ViewModelStoreOwner ที่มีได้เมื่อระบุอินสแตนซ์ View คุณต้องอัปเกรดเป็น Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 และ AppCompat 1.3.0-alpha01 เพื่อป้อนข้อมูลนี้อย่างถูกต้อง เพิ่มส่วนขยาย findViewModelStoreOwner() Kotlin ลงใน lifecycle-viewmodel-ktx แล้ว (aosp/1295522)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ทำให้ไม่สามารถเผยแพร่MutableLiveDataการตรวจสอบ Lint ที่เผยแพร่ใน Lifecycle 2.3.0-alpha01 พร้อมกับอาร์ติแฟกต์ lifecycle-livedata-core-ktx (b/155323109)

เวอร์ชัน 2.3.0-alpha02

29 เมษายน 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • SavedStateViewModelFactory ตอนนี้อนุญาตให้คุณส่งค่า Null Application ไปยังตัวสร้างเพื่อรองรับกรณีที่ไม่มีค่าดังกล่าวและไม่จำเป็นต้องรองรับ AndroidViewModel ได้ดียิ่งขึ้น (aosp/1285740)

การแก้ไขข้อบกพร่อง

  • ปรับปรุงประสิทธิภาพการเริ่มต้นแบบเย็นโดยหลีกเลี่ยงการยืนยันคลาสไม่สำเร็จในอุปกรณ์ API 28 และต่ำกว่า (aosp/1282118)

เวอร์ชัน 2.3.0-alpha01

4 มีนาคม 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-alpha01 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • ViewTreeLifecycleOwner.get(View) API ใหม่ช่วยให้คุณดึงข้อมูล LifecycleOwner ที่มีได้เมื่อระบุอินสแตนซ์ View คุณต้องอัปเกรดเป็น Activity 1.2.0-alpha01 และ Fragment 1.3.0-alpha01 เพื่อป้อนข้อมูลนี้อย่างถูกต้อง findViewTreeLifecycleOwner ส่วนขยาย Kotlin มีให้บริการใน lifecycle-runtime-ktx (aosp/1182361, aosp/1182956)
  • เพิ่มการตรวจสอบ Lint ใหม่ที่จะเตือนคุณเมื่อตั้งค่า null ใน MutableLiveData ที่กำหนดใน Kotlin เป็นแบบไม่เป็น Null ซึ่งจะใช้ได้เมื่อใช้สิ่งประดิษฐ์ livedata-core-ktx หรือ livedata-ktx (aosp/1154723, aosp/1159092)
  • มีอาร์ติแฟกต์ lifecycle-runtime-testing ใหม่ที่ให้ TestLifecycleOwner ซึ่งใช้ LifecycleOwner และให้ Lifecycle ที่เปลี่ยนแปลงได้ซึ่งปลอดภัยต่อเธรด (aosp/1242438)

แก้ไขข้อบกพร่อง

  • ตอนนี้อาร์ติแฟกต์ lifecycle-runtime มีชื่อแพ็กเกจที่ไม่ซ้ำกันแล้ว (aosp/1187196)

เวอร์ชัน 2.2.0

ViewModel-Savedstate เวอร์ชัน 2.2.0

5 กุมภาพันธ์ 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0 มีคอมมิตเหล่านี้

ตอนนี้ Lifecycle ViewModel SavedState ใช้เวอร์ชันเดียวกันกับอาร์ติแฟกต์ Lifecycle อื่นๆ แล้ว ลักษณะการทำงานของ 2.2.0 จะเหมือนกับลักษณะการทำงานของ 1.0.0

เวอร์ชัน 2.2.0

22 มกราคม 2020

androidx.lifecycle:lifecycle-*:2.2.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.1.0

  • การผสานรวม Coroutine ของ Lifecycle: อาร์ติแฟกต์ lifecycle-runtime-ktx ใหม่จะเพิ่มการผสานรวมระหว่าง Lifecycle กับ Kotlin Coroutine นอกจากนี้ยังมีการขยาย lifecycle-livedata-ktx เพื่อใช้ประโยชน์จากโครูทีนด้วย ดูรายละเอียดเพิ่มเติมได้ที่ใช้โครูทีน Kotlin กับคอมโพเนนต์สถาปัตยกรรม
  • ViewModelProviders.of() การเลิกใช้งาน: เราได้เลิกใช้งาน ViewModelProviders.of() แล้ว คุณส่ง Fragment หรือ FragmentActivity ไปยังตัวสร้าง ViewModelProvider(ViewModelStoreOwner) ใหม่เพื่อให้ได้ฟังก์ชันการทำงานเดียวกันเมื่อใช้ Fragment 1.2.0
  • lifecycle-extensions การเลิกใช้งานอาร์ติแฟกต์: การเลิกใช้งาน ViewModelProviders.of() ข้างต้นทำให้การเปิดตัวนี้เป็นการเลิกใช้งาน API สุดท้ายใน lifecycle-extensions และตอนนี้ควรถือว่าอาร์ติแฟกต์นี้เลิกใช้งานแล้วโดยสมบูรณ์ เราขอแนะนำให้ใช้ตามอาร์ติแฟกต์วงจรเฉพาะที่คุณต้องการ (เช่น lifecycle-service หากคุณใช้ LifecycleService และ lifecycle-process หากคุณใช้ ProcessLifecycleOwner) แทน lifecycle-extensions เนื่องจากจะไม่มีการเปิดตัว 2.3.0 ของ lifecycle-extensions ในอนาคต
  • โปรเซสเซอร์สำหรับคำอธิบายประกอบแบบเพิ่มใน Gradle: โปรเซสเซอร์สำหรับคำอธิบายประกอบของ Lifecycle จะเป็นแบบเพิ่มโดยค่าเริ่มต้น หากแอปเขียนด้วยภาษาโปรแกรม Java 8 คุณจะใช้ DefautLifecycleObserver แทนได้ และหากเขียนด้วยภาษาโปรแกรม Java 7 คุณจะใช้ LifecycleEventObserver ได้

เวอร์ชัน 2.2.0-rc03

4 ธันวาคม 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0-rc03 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขข้อผิดพลาดที่เกิดขึ้นเมื่อจัดเก็บ ViewModel ที่จำลองไว้ใน ViewModelStore และค้นหาในภายหลังด้วย Factory เริ่มต้น
  • แก้ไขการใช้งาน Dispatchers.Main.immediate ใน launchWhenCreated และวิธีการที่คล้ายกันเพื่อให้เรียกใช้แบบพร้อมกันในระหว่างเหตุการณ์วงจรที่เกี่ยวข้อง (aosp/1156203)

การมีส่วนร่วมจากภายนอก

  • ขอขอบคุณ Anders Järleberg ที่ช่วยแก้ไข (aosp/1156203)
  • ขอขอบคุณ Vsevolod Tolstopyatov จาก Jetbrains ที่ตรวจสอบการใช้งานการดำเนินการแบบอินไลน์

การเปลี่ยนแปลงการขึ้นต่อกัน

  • ตอนนี้ส่วนขยายวงจรขึ้นอยู่กับ Fragment 1.2.0-rc03 แล้ว

เวอร์ชัน 2.2.0-rc02

7 พฤศจิกายน 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0-rc02 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องในการตั้งค่า ProGuard ของไลบรารีที่ส่งผลต่ออุปกรณ์ที่ใช้ API 28 ขึ้นไปหาก API เป้าหมายต่ำกว่า 29 (b/142778206)

เวอร์ชัน 2.2.0-rc01

23 ตุลาคม 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0-rc01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ launchWhenCreated และเมธอดที่เกี่ยวข้องจะทำงานช้ากว่าเมธอดวงจรของแอปที่เชื่อมโยง 1 เฟรมเนื่องจากใช้ Dispatchers.Main แทน Dispatchers.Main.immediate (aosp/1145596)

การมีส่วนร่วมจากภายนอก

  • ขอขอบคุณ Nicklas Ansman ที่ช่วยแก้ไข (aosp/1145596)

เวอร์ชัน 2.2.0-beta01

9 ตุลาคม 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0-beta01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขการถดถอยที่เกิดขึ้นใน Lifecycle 2.2.0-alpha05 ในการจัดลำดับของ ProcessLifecycleOwner และ LifecycleOwner ของกิจกรรมที่เปลี่ยนเป็น "เริ่ม" และ "กลับมาทำงานต่อ" ในอุปกรณ์ Android 10 (aosp/1128132)
  • แก้ไขการถดถอยที่เกิดขึ้นในวงจร2.2.0-alpha05 ซึ่งจะทำให้เกิดNullPointerExceptionเมื่อใช้ 2.0.0 หรือ 2.1.0 ของ lifecycle-process (b/141536990)

เวอร์ชัน 2.2.0-alpha05

18 กันยายน 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.2.0-alpha05 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขเงื่อนไขการแข่งขันในเครื่องมือสร้าง LiveData ของโครูทีน b/140249349

เวอร์ชัน 2.2.0-alpha04

5 กันยายน 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope และการใช้งานพื้นฐานของ liveData จะใช้ Dispatchers.Main.immediate แทน Dispatchers.Main (b/139740492)

การมีส่วนร่วมจากภายนอก

  • ขอขอบคุณ Nicklas Ansman ที่ช่วยย้ายข้อมูลไปยัง Dispatchers.Main.immediate (aosp/1106073)

เวอร์ชัน 2.2.0-alpha03

7 สิงหาคม 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้การติดตั้งใช้งาน ViewModelStoreOwner สามารถเลือกติดตั้งใช้งาน HasDefaultViewModelProviderFactory เพื่อระบุ ViewModelProvider.Factory เริ่มต้นได้แล้ว ซึ่งได้ดำเนินการกับ Activity 1.1.0-alpha02, Fragment 1.2.0-alpha02 และ Navigation 2.2.0-alpha01 แล้ว (aosp/1092370, b/135716331)

การเปลี่ยนแปลง API

  • ViewModelProviders.of() เลิกใช้งานแล้ว คุณสามารถส่ง Fragment หรือ FragmentActivity ไปยังตัวสร้าง ViewModelProvider(ViewModelStoreOwner) ใหม่เพื่อให้ได้ฟังก์ชันการทำงานเดียวกัน (aosp/1009889)

เวอร์ชัน 2.2.0-alpha02

2 กรกฎาคม 2019

androidx.lifecycle:*:2.2.0-alpha02 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • แทนที่ LiveDataScope.initialValue ด้วย LiveDataScope.latestValue ซึ่งจะติดตามค่าปัจจุบันที่ปล่อยออกมาของบล็อก liveData
  • เพิ่มการโอเวอร์โหลดใหม่ให้กับliveData Builder ที่รับพารามิเตอร์ timeout เป็นประเภท Duration

เวอร์ชัน 2.2.0-alpha01

7 พฤษภาคม 2019

androidx.lifecycle:*:2.2.0-alpha01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • รุ่นนี้เพิ่มฟีเจอร์ใหม่ที่รองรับโครูทีน Kotlin สำหรับ Lifecycle และ LiveData ดูเอกสารประกอบโดยละเอียดเกี่ยวกับฟีเจอร์เหล่านี้ได้ที่นี่

ViewModel-SavedState เวอร์ชัน 1.0.0

เวอร์ชัน 1.0.0

22 มกราคม 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้

ฟีเจอร์สำคัญในเวอร์ชัน 1.0.0

  • เพิ่มคลาส SavedStateHandle ใหม่แล้ว ซึ่งจะช่วยให้ชั้นเรียน ViewModel เข้าถึงและมีส่วนร่วมในสถานะที่บันทึกไว้ได้ รับออบเจ็กต์นี้ได้ในตัวสร้างของคลาส ViewModel และโรงงานที่ Fragment และ AppCompatActivity จัดเตรียมให้โดยค่าเริ่มต้นจะแทรก SavedStateHandle โดยอัตโนมัติ
  • เพิ่ม AbstractSavedStateViewModelFactory แล้ว ซึ่งช่วยให้คุณสร้างโรงงานที่กำหนดเองสำหรับ ViewModel และให้สิทธิ์เข้าถึง SavedStateHandle

ViewModel-Savedstate เวอร์ชัน 1.0.0-rc03

4 ธันวาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงการขึ้นต่อกัน

  • ตอนนี้ Lifecycle ViewModel SavedState ขึ้นอยู่กับ Lifecycle 2.2.0-rc03 แล้ว

Viewmodel-Savedstate เวอร์ชัน 1.0.0-rc02

7 พฤศจิกายน 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงการขึ้นต่อกัน

  • ตอนนี้ขึ้นอยู่กับวงจรของผลิตภัณฑ์ 2.2.0-rc02

ViewModel-SavedState เวอร์ชัน 1.0.0-rc01

23 ตุลาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 1.0.0-beta01 เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้

ViewModel-Savedstate เวอร์ชัน 1.0.0-beta01

9 ตุลาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การเข้าถึง ViewModel ของ SavedState เป็นครั้งแรกใน Activity.onActivityResult() จะทำให้เกิด IllegalStateException (b/139093676)
  • แก้ไข IllegalStateException เมื่อใช้ AbstractSavedStateViewModelFactory (b/141225984)

ViewModel-SavedState เวอร์ชัน 1.0.0-alpha05

18 กันยายน 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • SavedStateViewModelFactory ไม่ได้ขยาย AbstractSavedStateViewModelFactory และ SavedStateHandle จะสร้างขึ้นสำหรับ ViewModel ที่ขอเท่านั้น (aosp/1113593)

ViewModel-SavedState เวอร์ชัน 1.0.0-alpha03

7 สิงหาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

  • lifecycle-viewmodel-savedstate ไม่ได้ขึ้นอยู่กับ fragment อีกต่อไป และระบบได้นำตัวสร้าง SavedStateViewModelFactory(Fragment) และ SavedStateViewModelFactory(FragmentActivity) ที่เกี่ยวข้องออกแล้ว แต่ตอนนี้ SavedStateViewModelFactory เป็นค่าเริ่มต้นสำหรับ Activity 1.1.0-alpha02, Fragment 1.2.0-alpha02 และ Navigation 2.2.0-alpha01 (b/135716331)

ViewModel-SavedState เวอร์ชัน 1.0.0-alpha02

2 กรกฎาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • เพิ่มSavedStateHandle.getLiveData()โอเวอร์โหลดที่ยอมรับค่าเริ่มต้น

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ SavedStateVMFactory เป็น SavedStateViewModelFactory
  • เปลี่ยนชื่อ AbstractSavedStateVMFactory เป็น AbstractSavedStateViewModelFactory

ViewModel-Savedstate เวอร์ชัน 1.0.0-alpha01

13 มีนาคม 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 ได้รับการเผยแพร่แล้ว ดูบันทึกการเปลี่ยนแปลงทั้งหมดสำหรับการเปิดตัวครั้งแรกนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้ ViewModels สามารถมีส่วนร่วมใน savedstate ได้แล้ว โดยคุณต้องใช้ Factory ของ ViewModel ที่เพิ่งเปิดตัว SavedStateVMFactory และ ViewModel ควรมี Constructor ที่รับออบเจ็กต์ SavedStateHandle เป็นพารามิเตอร์

เวอร์ชัน 2.1.0

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.0.0

  • เพิ่ม LifecycleEventObserver สำหรับกรณีที่ต้องใช้สตรีมเหตุการณ์วงจร ซึ่งเป็น API สาธารณะแทนที่จะเป็นคลาส GenericLifecycleObserver ที่ซ่อนอยู่
  • เพิ่มส่วนขยาย KTX สำหรับเมธอด LiveData.observe และเมธอด Transformations.*
  • เพิ่ม Transformations.distinctUntilChanged ซึ่งสร้างออบเจ็กต์ LiveData ใหม่ที่จะไม่ปล่อยค่าจนกว่าค่า LiveData ของแหล่งที่มาจะมีการเปลี่ยนแปลง
  • เพิ่มการรองรับโครูทีนใน ViewModel โดยการเพิ่มพร็อพเพอร์ตี้ส่วนขยาย ViewModel.viewModelScope

เวอร์ชัน 2.1.0

5 กันยายน 2019

androidx.lifecycle:lifecycle-*:2.1.0 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

เวอร์ชัน 2.1.0-rc01

2 กรกฎาคม 2019

androidx.lifecycle:*:2.1.0-rc01 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก androidx.lifecycle:*:2.1.0-beta01 ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

เวอร์ชัน 2.1.0-beta01

7 พฤษภาคม 2019

androidx.lifecycle:*:2.1.0-beta01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • วงจรการใช้งานได้รับการอัปเกรดเป็นเวอร์ชันเบต้า: API ที่เปิดตัวในเวอร์ชันอัลฟ่าก่อนหน้า เช่น liveData ฟังก์ชันส่วนขยายสำหรับการเปลี่ยนรูปแบบและการสังเกต ViewModel การเริ่มต้นด้วยการมอบสิทธิ์พร็อพเพอร์ตี้ และอื่นๆ มีความเสถียรและจะไม่เปลี่ยนแปลง

เวอร์ชัน 2.1.0-alpha04

3 เมษายน 2019

androidx.lifecycle:*:2.1.0-alpha04 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: มีการเปลี่ยนแปลง API พื้นฐานที่อยู่เบื้องหลัง by viewModels() และ by activityViewModels() เพื่อรองรับ ViewModelStore โดยตรง แทนที่จะรองรับเฉพาะ ViewModelStoreOwner (aosp/932932)

เวอร์ชัน 2.1.0-alpha03

13 มีนาคม 2019

androidx.lifecycle:*:2.1.0-alpha03 ได้รับการเผยแพร่แล้ว ดูรายการคอมมิตทั้งหมดที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • นำ ViewModelProvider.KeyedFactory ออกแล้ว อินเทอร์เฟซที่ 2 นอกเหนือจาก ViewModelProvider.Factory ไม่ทำงานร่วมกับฟีเจอร์ใหม่ๆ ได้ดี เช่น การมอบสิทธิ์พร็อพเพอร์ตี้ใน Kotlin by viewmodels {} (aosp/914133)

เวอร์ชัน 2.1.0-alpha02

30 มกราคม 2019

androidx.lifecycle 2.1.0-alpha02 ได้รับการเผยแพร่แล้ว

การเปลี่ยนแปลง API

  • ตอนนี้ LifecycleRegistry มีเมธอด setCurrentState() ที่มาแทนที่เมธอด setState() ซึ่งเลิกใช้งานแล้ว (aosp/880715)

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่อินสแตนซ์จำลอง ViewModel จะขัดข้องเมื่อล้าง ViewModelStore ที่มีอยู่ b/122273087

เวอร์ชัน 2.1.0-alpha01

17 ธันวาคม 2018

androidx.lifecycle 2.1.0-alpha01 ได้รับการเผยแพร่แล้ว

ฟีเจอร์ใหม่

  • เพิ่ม LifecycleEventObserver สำหรับกรณีที่ต้องใช้สตรีมเหตุการณ์วงจร ซึ่งเป็น API สาธารณะแทนที่จะเป็นคลาส GenericLifecycleObserver ที่ซ่อนอยู่
  • เพิ่มส่วนขยาย KTX สำหรับเมธอด LiveData.observe และเมธอด Transformations.*
  • เพิ่มเมธอด Transformations.distinctUntilChanged แล้ว โดยจะสร้างออบเจ็กต์ LiveData ใหม่ที่ไม่ปล่อยค่าจนกว่าค่า LiveData ของแหล่งที่มาจะมีการเปลี่ยนแปลง
  • การรองรับ Coroutine ใน ViewModel: เพิ่มพร็อพเพอร์ตี้ส่วนขยาย ViewModel.viewModelScope
  • เพิ่ม ViewModelProvider.KeyedFactory ซึ่งเป็น Factory สำหรับ ViewModel ที่รับ key และ Class ในเมธอด create

เวอร์ชัน 2.0.0

เวอร์ชัน 2.0.0

21 กันยายน 2018

Lifecycle 2.0.0 เปิดตัวพร้อมการแก้ไขข้อบกพร่อง 1 รายการจาก 2.0.0-rc01 ใน ViewModel

การแก้ไขข้อบกพร่อง

  • แก้ไขกฎ ProGuard ของ ViewModel ที่นำตัวสร้างออกอย่างไม่ถูกต้อง b/112230489

เวอร์ชัน 2.0.0-beta01

2 กรกฎาคม 2018

การแก้ไขข้อบกพร่อง

  • แก้ไขกฎ ProGuard ของ LifecycleObserver เพื่อเก็บเฉพาะการใช้งาน ไม่ใช่อินเทอร์เฟซย่อย b/71389427
  • แก้ไขกฎ ProGuard ของ ViewModel เพื่ออนุญาตการปกปิดและลดขนาด

เวอร์ชันก่อน AndroidX

สำหรับ Lifecycle เวอร์ชันก่อน AndroidX ที่ตามมา ให้รวมการอ้างอิงต่อไปนี้

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

เวอร์ชัน 1.1.1

21 มีนาคม 2018

มีการเปลี่ยนแปลงเล็กน้อยเพียงอย่างเดียวคือ android.arch.core.util.Function ย้ายจาก arch:runtime ไปยัง arch:common ซึ่งจะช่วยให้ใช้ได้โดยไม่ต้องมีทรัพยากร Dependency ของรันไทม์ เช่น ใน paging:common ด้านล่าง

lifecycle:common เป็นทรัพยากร Dependency ของ lifecycle:runtime การเปลี่ยนแปลงนี้จึงไม่ส่งผลต่อ lifecycle:runtime โดยตรง แต่จะส่งผลต่อเฉพาะโมดูลที่ขึ้นอยู่กับ lifecycle:common โดยตรง เช่น Paging

เวอร์ชัน 1.1.0

22 มกราคม 2018

การเปลี่ยนแปลงบรรจุภัณฑ์

ตอนนี้มีทรัพยากร Dependency ใหม่ที่มีขนาดเล็กลงมากให้ใช้งานแล้ว

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

การเปลี่ยนแปลง API

  • ตอนนี้เราได้นำ LifecycleActivity และ LifecycleFragment ที่เลิกใช้งานแล้วออกแล้ว โปรดใช้ FragmentActivity, AppCompatActivity หรือติดต่อทีมสนับสนุน Fragment
  • เพิ่มคำอธิบายประกอบ @NonNull ใน ViewModelProviders และ ViewModelStores แล้ว
  • ViewModelProviders เลิกใช้งานตัวสร้างแล้ว โปรดใช้วิธีการแบบคงที่โดยตรง
  • ViewModelProviders.DefaultFactory ถูกเลิกใช้งานแล้ว โปรดใช้ ViewModelProvider.AndroidViewModelFactory
  • เพิ่มเมธอด ViewModelProvider.AndroidViewModelFactory.getInstance(Application) แบบคงที่เพื่อเรียกข้อมูล Factory แบบคงที่ที่เหมาะสำหรับการสร้างอินสแตนซ์ ViewModel และ AndroidViewModel