วงจร
ตารางนี้แสดงอาร์ติแฟกต์ทั้งหมดในกลุ่ม androidx.lifecycle
อาร์ติแฟกต์ | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
วงจร-* | 2.9.1 | - | - | - |
lifecycle-viewmodel-navigation3 | - | - | - | 1.0.0-alpha03 |
การประกาศทรัพยากร 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 มีการคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
ขึ้นอยู่กับการเปลี่ยนแปลงใน Navigation31.0.0-alpha04
(Icd0fd, b/420991203)
เวอร์ชัน 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
ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambdainit
หรือบันทึกสิ่งใดลงใน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
ตัวแทนจะทำงานแบบเลซี่และจะไม่เรียกใช้ Lambdainit
หรือบันทึกสิ่งใดลงใน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)
การอัปเดตการขึ้นต่อกัน
- จาก Lifecycle
2.8.6
: ตอนนี้ Lifecycle Runtime Compose ขึ้นอยู่กับ Compose Runtime1.7.1
แล้ว - ตอนนี้ Lifecycle Runtime ขึ้นอยู่กับ ProfileInstaller
1.4.0
แล้ว
เวอร์ชัน 2.9.0-alpha02
4 กันยายน 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
การมีส่วนร่วมภายนอก
- ย้าย
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)ViewModel
saveable
ที่ผสานรวมโดยใช้ผู้มอบสิทธิ์พร็อพเพอร์ตี้จะใช้ชื่อคลาสเป็นส่วนหนึ่งของคีย์ที่สร้างขึ้นโดยอัตโนมัติ ซึ่งจะหลีกเลี่ยงความขัดแย้งหากหลายคลาสใช้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
มี APIdropUnlessResumed
และ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 นอกเหนือจาก Androidlifecycle-runtime
ย้าย API ส่วนใหญ่ไปที่common
และรองรับ jvm และ iOS นอกเหนือจาก Androidlifecycle-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 นอกเหนือจาก Androidlifecycle-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
ตอนนี้เมธอด ComposableviewModel
ยอมรับ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.Event
s สามารถสังเกตได้ในรูปแบบFlow
ที่มีLifecycle.asFlow().
(If2c0f, b/176311030)LifecycleResumeEffect
มีการเพิ่ม API เพื่อเรียกใช้ ComposeSideEffect
ตามทั้งการเรียกกลับของเหตุการณ์Lifecycle.Event.ON_RESUME
และLifecycle.Event.ON_PAUSE
(I60386, b/235529345)LifecycleStartEffect
เพิ่ม API เพื่อเรียกใช้ ComposeSideEffect
s ตามการเรียกกลับของเหตุการณ์Lifecycle.Event.ON_START
และLifecycle.Event.ON_STOP
(I5a8d1, b/235529345)- เราได้เพิ่ม
LifecycleEventEffect
API เพื่อเรียกใช้SideEffect
Compose ตามLifecycle.Event
(Ic9794, b/235529345) - เราได้เพิ่มส่วนขยาย
Lifecycle.collectAsState()
เพื่อแสดงLifecycle.State
โดยตรงเป็น ComposeState
ซึ่งเทียบเท่ากับ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 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
lifecycle-viewmodel-savedstate
ตอนนี้ขึ้นอยู่กับ SavedState1.2.1
แล้ว (cd7251)- ตอนนี้วงจรจะขึ้นอยู่กับ ProfileInstaller
1.3.0
(f9d30b)
เวอร์ชัน 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/242871265FlowLiveData.asFlow()
จะสร้างcallbackFlow
แทนการใช้การติดตั้งใช้งานChannel
ของตัวเองเพื่อให้มั่นใจใน ความปลอดภัยของเธรดและการรักษาบริบท (I4a8b2, b/200596935)- ตอนนี้ฟังก์ชัน
FlowLiveData
'sasLiveData
จะเก็บค่าเริ่มต้นของ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
มี APIgetStateFlow()
ที่แสดงผล KotlinStateFlow
สำหรับการตรวจสอบการเปลี่ยนแปลงค่าเพื่อเป็นทางเลือกแทนการใช้LiveData
ViewModel CreationExtras - เมื่อเขียน
ViewModelProvider.Factory
ที่กำหนดเอง คุณไม่จำเป็นต้องขยายAndroidViewModelFactory
หรือAbstractSavedStateViewModelFactory
เพื่อเข้าถึงApplication
หรือSavedStateHandle
ตามลำดับอีกต่อไป แต่จะมีการระบุฟิลด์เหล่านี้ให้กับคลาสย่อยViewModelProvider.Factory
ทุกคลาสเป็นCreationExtras
ผ่านการโอเวอร์โหลดใหม่ของcreate
:create(Class<T>, CreationExtras)
โดยกิจกรรมหรือ Fragment จะระบุข้อมูลพิเศษเหล่านี้โดยอัตโนมัติเมื่อใช้ Activity1.5.0
และ Fragment1.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 ที่แสดงผล KotlinStateFlow
สำหรับการตรวจสอบการเปลี่ยนแปลงค่าเป็นทางเลือกแทนการใช้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
มี APIviewModel()
ที่ ใช้โรงงาน 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)
การมีส่วนร่วมภายนอก
เวอร์ชัน 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
นี้จากเธรดต่างๆ
- ตอนนี้ LifecycleRegistry จะบังคับใช้
- เครื่องมือช่วยสถานะวงจรและเหตุการณ์: เพิ่มเมธอดเครื่องมือช่วยแบบคงที่ของ
downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
ไปยังLifecycle.Event
เพื่อสร้างEvent
เมื่อกำหนดState
และทิศทางการเปลี่ยน เพิ่มเมธอดgetTargetState()
ที่ให้State
ซึ่งวงจรจะเปลี่ยนไปใช้โดยตรงหลังจากEvent
withStateAtLeast
: เพิ่ม APILifecycle.withStateAtLeast
ที่รอสถานะวงจร และเรียกใช้บล็อกโค้ดที่ไม่ระงับแบบพร้อมกัน ณ จุดที่มีการเปลี่ยนแปลงสถานะ แล้วดำเนินการต่อด้วยผลลัพธ์ API เหล่านี้แตกต่างจากwhen*
เมธอดที่มีอยู่เนื่องจากไม่อนุญาตให้เรียกใช้โค้ดที่ระงับและไม่ได้ใช้ตัวจัดส่งที่กำหนดเอง (aosp/1326081)ViewTree
API:ViewTreeLifecycleOwner.get(View)
และViewTreeViewModelStoreOwner.get(View)
API ใหม่ช่วยให้คุณดึงข้อมูลLifecycleOwner
และViewModelStoreOwner
ที่มีได้ตามลำดับ เมื่อระบุอินสแตนซ์View
คุณต้องอัปเกรดเป็น Activity1.2.0
และ Fragment1.3.0
รวมถึง AppCompat 1.3.0-alpha01 ขึ้นไปเพื่อป้อนข้อมูลนี้อย่างถูกต้อง ส่วนขยาย Kotlin ของfindViewTreeLifecycleOwner
และfindViewTreeViewModelStoreOwner
พร้อมใช้งานในlifecycle-runtime-ktx
และlifecycle-viewmodel-ktx
ตามลำดับLiveData.observe()
การเลิกใช้งานส่วนขยาย Kotlin: ตอนนี้เราเลิกใช้งานส่วนขยาย KotlinLiveData.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)
การมีส่วนร่วมภายนอก
- ตอนนี้ API สำหรับระงับโครูทีนที่รับรู้ถึงวงจรของกิจกรรมจะจัดการการเรียกไปยัง
yield()
ได้ดียิ่งขึ้น ขอขอบคุณ Nicklas Ansman Giertz (aosp/1430830, b/168777346)
เวอร์ชัน 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)
การแก้ไขข้อบกพร่อง
- อัปเกรด androidx เพื่อใช้ Kotlin 1.4 (Id6471, b/165307851, b/165300826)
การเปลี่ยนแปลงเอกสาร
- เราได้อัปเดต
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
คุณต้องอัปเกรดเป็น Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
และ AppCompat1.3.0-alpha01
เพื่อป้อนข้อมูลนี้อย่างถูกต้อง เพิ่มส่วนขยายfindViewModelStoreOwner()
Kotlin ลงในlifecycle-viewmodel-ktx
แล้ว (aosp/1295522)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ทำให้ไม่สามารถเผยแพร่
MutableLiveData
การตรวจสอบ Lint ที่เผยแพร่ใน Lifecycle2.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
ตอนนี้อนุญาตให้คุณส่งค่า NullApplication
ไปยังตัวสร้างเพื่อรองรับกรณีที่ไม่มีค่าดังกล่าวและไม่จำเป็นต้องรองรับ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
คุณต้องอัปเกรดเป็น Activity1.2.0-alpha01
และ Fragment1.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)
ใหม่เพื่อให้ได้ฟังก์ชันการทำงานเดียวกันเมื่อใช้ Fragment1.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
เริ่มต้นได้แล้ว ซึ่งได้ดำเนินการกับ Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
และ Navigation2.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
เป็นค่าเริ่มต้นสำหรับ Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
และ Navigation2.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
ไม่ทำงานร่วมกับฟีเจอร์ใหม่ๆ ได้ดี เช่น การมอบสิทธิ์พร็อพเพอร์ตี้ใน Kotlinby 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