Lifecycle
Tabel ini mencantumkan semua artefak dalam grup androidx.lifecycle.
| Artefak | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Lifecycle, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.4" 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:2.10.0-beta01" // 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.4" 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:2.10.0-beta01") // 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.4" 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.4" 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") }
Untuk mengetahui informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 2.10
Versi 2.10.0-beta01
22 Oktober 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 dirilis. Versi 2.10.0-beta01 berisi commit ini.
Perubahan API
ViewModelStoreNavEntryDecoratorDefaultdiganti namanya menjadiViewModelStoreNavEntryDecoratorDefaults, dengan 's'. (I6d27b, b/444447434)
Perbaikan Bug
rememberLifecycleOwnertidak lagi mengalami error jika pemilik menerima peristiwaLifecycle.Event.ON_DESTROYsebelum berpindah keLifeycle.State.CREATED. (I6f98e, b/444594991)
Versi 2.10.0-alpha05
8 Oktober 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 dirilis. Versi 2.10.0-alpha05 berisi commit ini.
Perubahan API
removeViewModelStoreOnPopCallback()kini menjadi bagian dari objekViewModelStoreNavEntryDecoratorDefaultyang merupakan tempat platform dan penerapan lain dapat memanggil default. (Ia1f23, b/444447434)- Memfaktorkan ulang
ViewModelStoreNavEntryDecoratordari fungsi ke class untuk mencerminkan fungsinya sebagai factory untukNavEntryDecoratordengan lebih baik, dan mengganti nama parametershouldRemoveViewModelStoredecorator menjadiremoveViewModelStoreOnPopuntuk mengklarifikasi bahwa callback ini hanya dipanggil saat entri dikeluarkan daribackStack. (Iefdc5, b/444447434)
Versi 2.10.0-alpha04
24 September 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 dirilis. Versi 2.10.0-alpha04 berisi commit ini.
Perubahan API
- Faktorkan ulang composable
LifecycleOwnerkerememberLifecycleOwner. Fungsi ini sekarang menampilkanLifecycleOwnersecara langsung. Untuk memberikan pemilik ini ke sub-komposisi, gunakanCompositionLocalProvider. (Ic57f0, b/444446629) - Tambahkan stub KMP ke lifecycle-viewmodel-navigation3 agar JetBrains dapat menyediakan fork yang mengisi target ini dan dengan demikian mendukung CMP. (I44a4c)
Versi 2.10.0-alpha03
27 Agustus 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 dirilis. Versi 2.10.0-alpha03 berisi commit ini.
Perubahan API
- Update Compose ke 1.9.0. (I2b9de)
Versi 2.10.0-alpha02
13 Agustus 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 dirilis. Versi 2.10.0-alpha02 berisi commit ini.
Fitur Baru
Composable
LifecycleOwnerkini dapat membuat siklus proses root mandiri. Dengan menetapkanparent = null(secara eksplisit), siklus proses baru beroperasi secara independen dari host mana pun (sepertiActivity,Fragment, atauNavBackStackEntry). Siklus proses ini dimulai segera setelah composable memasuki komposisi dan otomatis dihancurkan saat keluar. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Perubahan API
- Di composable
LifecycleOwner, parameterparentLifecycleOwnertelah diganti namanya menjadiparent. (I080bc)
Perbaikan Bug
- Composable
LifecycleOwnerkini memindahkan siklus prosesnya dengan benar keDESTROYEDsaat dibuang. Hal ini mencegah potensi kebocoran untuk kode eksternal yang menyimpan referensi ke siklus proses. (I9e5b7, b/433659048) - Memindahkan minSdk default dari API 21 ke API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Kontribusi Eksternal
- Menghapus kolom pendukung internal yang tidak perlu dari
LifecycleOwner. Terima kasih kepada Jake Wharton atas kontribusinya. (Ideddb)
Versi 2.10.0-alpha01
30 Juli 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 dirilis. Versi 2.10.0-alpha01 berisi commit ini.
Fitur Baru
Tambahkan composable
LifecycleOwneruntuk memungkinkan pembuatan siklus proses yang tercakup langsung dalam UI. Hal ini berguna untuk komponen yang perlu mengelola siklus prosesnya sendiri secara independen. Untuk contoh cara Navigation3 mengintegrasikan composable baru ini, lihat aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Perubahan API
- Menambahkan fungsi factory builder untuk
CreationExtras, yang menyediakan API Kotlin yang lebih nyaman dan idiomatis. (Iab2bd) - Menambahkan dukungan native untuk jenis nullable di
SavedStateHandle.saved, sehingga menyederhanakan penyimpanan dan pemulihan properti nullable. (I54d69, b/421325690) - Tandai konstruktor
SavedStateHandlesebagai@VisibleForTesting. (Iff0e0, b/408002794)
Versi 2.9
Versi 2.9.4
17 September 2025
androidx.lifecycle:lifecycle-*:2.9.4 dirilis. Versi 2.9.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki error terkait plugin Compose Compiler yang tidak diterapkan sehingga menyebabkan artefak KMP Siklus Proses rusak. (Ie95bc, b/443096483, b/443965665)
Versi 2.9.3
27 Agustus 2025
androidx.lifecycle:lifecycle-*:2.9.3 dirilis. Versi 2.9.3 berisi commit ini.
Fitur Baru
- Menambahkan target Multiplatform Kotlin (KMP) baru ke artefak
*-composeSiklus Proses. Lifecycle kini mendukung total platform berikut: JVM (Android dan Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), dan Web (JavaScript, WasmJS). (I0a0e4)
Perbaikan Bug
- Memperbarui
androidx.annotationke 1.9.1 (Ic9e4f, b/397701294)
Versi 2.9.2
16 Juli 2025
androidx.lifecycle:lifecycle-*:2.9.2 dirilis. Versi 2.9.2 berisi commit ini.
Perbaikan Bug
- Menambahkan target Multiplatform Kotlin (KMP) baru ke artefak Siklus Proses. Lifecycle kini mendukung total platform berikut: JVM (Android dan Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), dan Web (JavaScript, WasmJS). Perhatikan bahwa tidak ada target KMP baru yang ditambahkan ke artefak
*-compose, karena hal ini bergantung pada rilis stabil Compose 1.9. (I01cb8).
Update dependensi
- Lifecycle sekarang bergantung pada Annotation
1.9.1untuk mengaktifkan dukungan bagi target KMP baru (Ic9e4f, b/397701294).
Versi 2.9.1
4 Juni 2025
androidx.lifecycle:lifecycle-*:2.9.1 dirilis. Versi 2.9.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki
SavedStateHandle.remove(key)yang tidak menghapus statusSavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
Versi 2.9.0
7 Mei 2025
androidx.lifecycle:lifecycle-*:2.9.0 dirilis. Versi 2.9.0 berisi commit ini.
Perubahan penting sejak versi 2.8.0
- Artefak KMP
androidx.lifecycle:lifecycle-viewmodel-testingbaru tersedia yang menyediakan classViewModelScenariountuk mengujiViewModelsdalam isolasi, dengan dukungan untukonCleareddanSavedStateHandleserta pengujian proses keluar dan pembuatan ulang melaluirecreate(). - Tambahkan
getMutableStateFlowkeSavedStateHandleuntuk menampilkanMutableStateFlow. Fungsi baru ini eksklusif untuk kunci dan tidak dapat digunakan dengangetLiveData. Pengecualian akan ditampilkan jika Anda mencoba menggunakan keduanya untuk mengakses status yang sama. CreationExtraskini menyertakan overload operator seperti peta untuk memungkinkan manipulasi konten idiomatis di Kotlin. Hal ini memungkinkan penggunaanin,+=, dan+denganCreationExtras.
Dukungan Serialisasi KotlinX
Dengan dukungan KotlinX Serialization yang ditambahkan di SavedState
1.3.0, kami telah memperkenalkansaved, delegasi properti lazy, untuk memudahkan penyimpanan class@SerializablediSavedStateHandledan pemulihan otomatis class tersebut di seluruh proses penghentian dan pembuatan ulang. Perhatikan bahwa delegasisavedbersifat lazy dan tidak akan memanggil lambdainitatau menyimpan apa pun keSavedStateHandlehingga diakses.@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 } }
Multiplatform Kotlin
- Modul
lifecycle-testingkini kompatibel dengan KMP, termasuk API sepertiTestLifecycleOwner. - Modul
lifecycle-viewmodel-savedstatekini kompatibel dengan KMP, termasuk API sepertiSavedStateHandle. androidx.compose.ui.platform.LocalLifecycleOwnerkini tersedia di set sumber umum.NewInstanceFactorykini tersedia di target JVM Desktop dan Android.
Perubahan Perilaku
- Status
Lifecycle.DESTROYEDbersifat terminal, dan upaya apa pun untuk memindahkanLifecycledari status tersebut ke status lain kini akan menghasilkanIllegalStateException. SavedStateHandletidak lagi menyertakanSavedStateProvider.saveState()apa pun yangBundleyang ditampilkan kosong.
Versi 2.9.0-rc01
23 April 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 dirilis. Versi 2.9.0-rc01 berisi commit ini.
Peringatan Kompatibilitas API Lint
- JetBrains mengubah
KaCallableMemberCalldari class menjadi antarmuka, yang merusak kompatibilitas biner. Hal ini dapat menyebabkan error jika versi AGP project Anda berbeda dengan versi yang digunakan untuk mengompilasi pemeriksaan lint. Pembaruan ini dilakukan di aosp/3577172, tetapi tidak ada dalam catatan rilis. Kami menjelaskannya di sini. Perbaikan yang direkomendasikan: Update ke AGP stabil terbaru. Jika Anda tidak dapat mengupdate sepenuhnya, gunakanandroid.experimental.lint.versionuntuk menyelaraskan pemeriksaan lint dengan versi AGP Anda — lihat Perubahan perilaku Runtime Compose untuk mengetahui detailnya.
Versi 2.9.0-beta01
9 April 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 dirilis. Versi 2.9.0-beta01 berisi commit ini.
Perubahan API
Lifecycle ViewModel Composekini menggunakan penyiapan Multiplatform Kotlin yang sama dengan Compose Runtime 1.7.1 dan yang lebih tinggi - artefak-desktopkini dihapus dan artefak-jvmStubsserta-linuxx64Stubstelah ditambahkan. Tidak ada target ini yang dimaksudkan untuk digunakan, target ini adalah placeholder untuk membantu upaya Jetbrains Compose. (I5cb14, b/406592090)
Update Dependensi
- Library ini kini menargetkan tingkat bahasa Kotlin 2.0 dan memerlukan KGP 2.0.0 atau yang lebih baru. (Idb6b5)
Lifecycle ViewModel Composekini bergantung pada Compose 1.7.8. (I5cb14, b/406592090)
Versi 2.9.0-alpha13
26 Maret 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 dirilis tanpa perubahan publik penting. Versi 2.9.0-alpha13 berisi commit ini.
Versi 2.9.0-alpha12
12 Maret 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 dirilis. Versi 2.9.0-alpha12 berisi commit ini.
Perubahan API
- Menambahkan anotasi
@MainThreadkeViewModelProvider.getdi semua platform KMP yang didukung. (I7e8dd, b/397736115) - Mengganti nama
SavedState*DelegatesmenjadiSavedState*Delegate. (I8589b, b/399629301)
Versi 2.9.0-alpha11
26 Februari 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 dirilis. Versi 2.9.0-alpha11 berisi commit ini.
Perubahan API
- Menambahkan parameter
SavedStateConfigke delegasisaved()(I39b3a)
Versi 2.9.0-alpha10
12 Februari 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 dirilis. Versi 2.9.0-alpha10 berisi commit ini.
Perubahan API
- Memindahkan
MutableStateSerializerkesavedstate-composedarilifecycle-viewmodel-compose. (I4f690, b/378895074)
Kontribusi Eksternal
- Menambahkan masalah Lint baru untuk memanggil
Lifecycle::currentStatedalam komposisi, dan menyarankan penggunaancurrentStateAsalue().valueuntuk memastikan bahwa perubahan dalam status Siklus Proses menyebabkan rekomposisi dengan benar. Terima kasih, Steven Schoen! (Iad484)
Versi 2.9.0-alpha09
29 Januari 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 dirilis. Versi 2.9.0-alpha09 berisi commit ini.
Fitur Baru
- Tambahkan
MutableStateSerializeruntuk menyerialkanandroidx.compose.runtime.MutableState. (Idfc48, b/378895074)
Perubahan API
- Mengganti fungsi delegasi
SavedStateHandle.saved()yang di-overload dengan parameter default (Icd1c1) AbstractSavedStateViewModelFactorytidak digunakan lagi karena membuatSavedStateHandleuntuk setiapViewModel, sehingga menyebabkan overhead yang tidak perlu. GunakanViewModelProvider.FactorydenganCreationExtras.createSavedStateHandlesebagai gantinya untuk pembuatanViewModelyang lebih efisien. (Ia920b, b/388590327)
Versi 2.9.0-alpha08
11 Desember 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 dirilis. Versi 2.9.0-alpha08 berisi commit ini.
Fitur Baru
- Tambahkan
ViewModelScenario.recreateuntuk menyimulasikan Kematian Proses Sistem yang membuat ulangViewModelyang sedang diuji dan semua komponen terkait. (Id6a69, b/381063087) - Instance
LifecycleOwnerdanViewModelStoreOwneryang diambil melaluifindViewTreeAPI masing-masing kini dapat diselesaikan melalui induk yang tidak terkait dari tampilan, sepertiViewOverlay. Lihat catatan rilis core atau dokumentasi diViewTree.setViewTreeDisjointParentuntuk mengetahui informasi selengkapnya tentang induk tampilan terpisah. (I800f4)
Perubahan API
- Membuat penamaan dan organisasi paket lebih konsisten dengan
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Perbaikan Bug
- Library ini kini menggunakan anotasi nullabilitas JSpecify, yang merupakan penggunaan jenis. Developer Kotlin harus menggunakan argumen compiler berikut untuk menerapkan penggunaan yang benar:
-Xjspecify-annotations=strict(ini adalah nilai default yang dimulai dengan compiler Kotlin versi 2.1.0). (Ie4340, b/326456246) - Mendokumentasikan urutan penghapusan
ViewModel.onCleared. (I586c7, b/363984116)
Versi 2.9.0-alpha07
13 November 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 dirilis. Versi 2.9.0-alpha07 berisi commit ini.
Kompatibilitas Multiplatform Kotlin
- Lifecycle
ViewModel SavedStatekini kompatibel dengan KMP. Hal ini memungkinkan Anda menggunakanSavedStateHandledalam kode umum. (Ib6394, b/334076622)
Dukungan Serialisasi KotlinX
Dengan dukungan KotlinX Serialization yang ditambahkan di SavedState
1.3.0-alpha05, kami telah memperkenalkansaved, delegasi properti lazy, untuk memudahkan penyimpanan class@SerializablediSavedStateHandledan pemulihan otomatis class tersebut di seluruh proses penghentian dan pembuatan ulang. Perhatikan bahwa delegasisavedbersifat lazy dan tidak akan memanggil lambdainitatau menyimpan apa pun keSavedStateHandlehingga diakses. (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 } }
Perubahan API
- Tambahkan
getMutableStateFlowkeSavedStateHandleuntuk menampilkanMutableStateFlow. Fungsi baru ini eksklusif untuk kunci dan tidak dapat digunakan dengangetLiveData. Pengecualian akan ditampilkan jika Anda mencoba menggunakan keduanya untuk mengakses status yang sama. (I04a4f, b/375408415)
Versi 2.9.0-alpha06
30 Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 dirilis. Versi 2.9.0-alpha06 berisi commit ini.
Perubahan Perilaku
- Status
Lifecycle.DESTROYEDbersifat terminal, dan upaya apa pun untuk memindahkanLifecycledari status tersebut ke status lain kini akan menghasilkanIllegalStateException. (I116c4, b/370577987) SavedStateHandletidak lagi menyertakanSavedStateProvider.saveState()apa pun yangBundleyang ditampilkan kosong. (I910b5, b/370577987)
Perbaikan Bug
Lifecycle.eventFlowkini diselesaikan dengan benar saatLifecycleadalahDESTROYED(I293b2, b/374043130)
Versi 2.9.0-alpha05
16 Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 dirilis tanpa perubahan penting. Versi 2.9.0-alpha05 berisi commit ini.
Versi 2.9.0-alpha04
2 Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 dirilis. Versi 2.9.0-alpha04 berisi commit ini.
Multiplatform Kotlin
- Modul
lifecycle-viewmodel-savedstatekini dikonfigurasi agar kompatibel dengan KMP sebagai persiapan untuk API sepertiSavedStateHandleyang akan tersedia di set sumber umum dalam rilis mendatang. (I503ed, I48764, b/334076622)
Versi 2.9.0-alpha03
18 September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 dirilis. Versi 2.9.0-alpha03 berisi commit ini.
Perbaikan Bug
- Dari Lifecycle
2.8.6: Error LintNullSafeMutableLiveDatatelah meningkatkan dukungan untuk smart cast, sehingga menghindari positif palsu. (85fed6, b/181042665)
Update Dependensi
- Dari Lifecycle
2.8.6: Lifecycle Runtime Compose sekarang bergantung pada Compose Runtime1.7.1 - Lifecycle Runtime sekarang bergantung pada ProfileInstaller
1.4.0
Versi 2.9.0-alpha02
4 September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 dirilis. Versi 2.9.0-alpha02 berisi commit ini.
Perbaikan Bug
- Dari Lifecycle
2.8.5: Perbarui aturan ProGuardandroidx.lifecycle.ReportFragmentuntuk mengizinkan obfuscation . (ff898e1)
Kontribusi Eksternal
- Pindahkan
androidx.compose.ui.platform.LocalLifecycleOwnerke set sumber umum (KMP). Terima kasih kepada Ivan Matkov dari JetBrains atas kontribusinya. (8cd5d03) - Dari Lifecycle
2.8.5: Delegasi ekstensi `SavedStateHandle.saveable` kini mendukung nilai nullable. Terima kasih kepada Roman Kalukiewicz atas kontribusinya. (0d78ea6)
Versi 2.9.0-alpha01
7 Agustus 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 dirilis. Versi 2.9.0-alpha01 berisi commit ini.
Multiplatform Kotlin
lifecycle-testingkini kompatibel dengan KMP. (Iea41e)- Menambahkan dukungan untuk target multiplatform kotlin
linuxArm64(I139d3, b/338268719)
Fitur Baru
- Artefak KMP
androidx.lifecycle:lifecycle-viewmodel-testingbaru tersedia yang menyediakan classViewModelScenariountuk menguji ViewModel secara terpisah, dengan dukungan untukonCleared(semua platform) danSavedStateHandle(khusus Android). (337f68d, c9b3409, 9799a95c, b/264602919) - Membuat
ViewModeldenganViewModelProviderkini aman untuk thread; anotasi@MainThreadtelah dihapus. (Ifd978, b/237006831)
Perubahan API
- Tambahkan fungsi factory
CreationExtras.Key()untuk menyederhanakan pembuatan objekCreationExtras.Keyanonim. (I970ee) CreationExtraskini menyertakan overload operator seperti peta untuk memungkinkan manipulasi konten idiomatis di Kotlin. Hal ini memungkinkan penggunaanin,+=, dan+denganCreationExtras. (Ib4353)CreationExtrassekarang mengimplementasikan metodeequals,hashCode, dantoString. (Ib4353)NewInstanceFactorykini tersedia di target JVM Desktop dan Android. (d3d0892)- Properti ekstensi inline untuk mengekspos Application pokok secara aman di Kotlin versi bahasa 2.0 (I39df2)
Perbaikan Bug
- Menghapus penentuan batas akses manual ke API platform baru karena hal ini terjadi secara otomatis melalui pemodelan API saat menggunakan R8 dengan AGP 7.3 atau yang lebih baru (misalnya, R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (misalnya, D8 versi 8.1). Klien yang tidak menggunakan AGP disarankan untuk mengupdate ke D8 versi 8.1 atau yang lebih baru. Baca artikel ini untuk informasi selengkapnya. (If6b4c, b/345472586)
Versi 2.8
Versi 2.8.7
30 Oktober 2024
androidx.lifecycle:lifecycle-*:2.8.7 dirilis. Versi 2.8.7 berisi commit ini.
Perubahan API
androidx.compose.ui.platform.LocalLifecycleOwnerkini tersedia di set sumber umum (KMP). (6a3f5b3)lifecycle-runtime-compose: Artefakdesktopdihapus dan artefak-jvmStubsserta-linuxx64Stubsditambahkan. Tidak ada target ini yang dimaksudkan untuk digunakan, target ini adalah placeholder untuk membantu upaya Jetbrains Compose. (6a3f5b3)
Versi 2.8.6
18 September 2024
androidx.lifecycle:lifecycle-*:2.8.6 dirilis. Versi 2.8.6 berisi commit ini.
Perbaikan Bug
- Error Lint
NullSafeMutableLiveDatatelah meningkatkan dukungan untuk smart cast, sehingga menghindari positif palsu. (85fed6, b/181042665)
Update Dependensi
- Lifecycle Runtime Compose sekarang bergantung pada Compose Runtime
1.7.1
Versi 2.8.5
4 September 2024
androidx.lifecycle:lifecycle-*:2.8.5 dirilis. Versi 2.8.5 berisi commit ini.
Perbaikan Bug
- Perbarui aturan ProGuard
androidx.lifecycle.ReportFragmentuntuk mengizinkan obfuscation . (ff898e1)
Kontribusi Eksternal
- Delegasi ekstensi
SavedStateHandle.saveablekini mendukung nilai nullable. Terima kasih kepada Roman Kalukiewicz atas kontribusinya. (0d78ea6)
Versi 2.8.4
24 Juli 2024
androidx.lifecycle:lifecycle-*:2.8.4 dirilis. Versi 2.8.4 berisi commit ini.
Perbaikan Bug
LiveData.asFlow()kini menangani kasus dengan benar saat Flow yang ditampilkan segera diselesaikan setelah menerima nilai yang sudah ditetapkan diLiveData(misalnya, saat menggunakantake(1)). (I9c566)- Penyelesaian
Lifecycle*Effectkini bersifat idempoten (yaitu, jikaonStopOrDisposedipanggil karena Lifecycle dihentikan,onStopOrDisposetidak akan dipanggil lagi saat pelepasan kecuali jika Lifecycle kembali keSTARTED). (I5f607, b/352364595)
Versi 2.8.3
1 Juli 2023
androidx.lifecycle:lifecycle-*:2.8.3 dirilis. Versi 2.8.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah kompatibilitas mundur Lifecycle 2.8 dengan Compose 1.6.0 dan yang lebih rendah saat menggunakan penyusutan kode. (aosp/3133056, b/346808608)
Versi 2.8.2
12 Juni 2024
androidx.lifecycle:lifecycle-*:2.8.2 dirilis. Versi 2.8.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki error
CompositionLocal LocalLifecycleOwner not presentsaat menggunakan Lifecycle 2.8.X dengan Compose 1.6.X atau yang lebih lama - Anda kini dapat menggunakan Lifecycle 2.8.2 dengan versi Compose apa pun tanpa memerlukan solusi apa pun. (aosp/3105647, b/336842920) ViewModelProvidertidak akan error lagi saat menggabungkan dependensi LifecyclecompileOnlyversi sebelumnya dengan versi 2.8+, sehingga memperbaiki masalah pada library seperti LeakCanary. (I80383, b/341792251)
Versi 2.8.1
29 Mei 2024
androidx.lifecycle:lifecycle-*:2.8.1 dirilis. Versi 2.8.1 berisi commit ini.
Perbaikan Bug
lifecycle-viewmodel-composekini hanya memiliki dependensi umum padacompose-runtime, sehingga menghapus dependensi umumnya padacompose-ui. Artefak Android mempertahankancompose-uiuntuk kompatibilitas. (aosp/3079334, b/339562627)- Integrasi
saveableViewModelmenggunakan delegasi properti kini menggunakan nama class sebagai bagian dari kunci yang dibuat otomatis, sehingga menghindari konflik jika beberapa class menggunakanSavedStateHandleyang sama. (aosp/3063463)
Versi 2.8.0
14 Mei 2024
androidx.lifecycle:lifecycle-*:2.8.0 dirilis. Versi 2.8.0 berisi commit ini.
Perubahan penting sejak versi 2.7.0
LocalLifecycleOwnertelah dipindahkan dari Compose UI kelifecycle-runtime-composesehingga API pembantu berbasis Compose-nya dapat digunakan di luar Compose UI.- Artefak
lifecycle-runtime-composekini berisi APIdropUnlessResumeddandropUnlessStartedyang memungkinkan Anda melepaskan klik atau peristiwa lain yang terjadi bahkan setelahLifecycleOwnerturun di bawahLifecycle.Stateyang diberikan. Misalnya, ini dapat digunakan dengan Navigation Compose untuk menghindari penanganan peristiwa klik setelah transisi ke layar lain dimulai:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ViewModel.viewModelScopekini menjadi parameter konstruktor yang dapat diganti, sehingga Anda dapat menyuntikkan dispatcher danSupervisorJob()sendiri atau mengganti setelan default dengan menggunakanbackgroundScopeyang tersedia dalamrunTest. (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) }ViewModeltelah ditulis ulang dalam Kotlin dan kini menggunakanAutoClosable, bukanCloseable. Sekarang mendukung penambahan objekAutoCloseabledengankeyyang memungkinkan pengambilan objek tersebut melaluigetCloseable().Memanggil
LifecycleStartEffectdanLifecycleResumeEffecttanpa kunci kini merupakan error, mengikuti konvensi yang sama dengan APIDisposableEffectyang dicerminkan oleh API ini.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)tidak digunakan lagi dan digantikan denganLiveData.toPublisher(lifecycleOwner).Ekstensi kotlin
lifecycle-livedata-core-ktxkini telah dipindahkan ke modullifecycle-livedata-core.NullSafeMutableLiveDatatelah diubah untuk menghindari banyak positif palsu.
Kompatibilitas Multiplatform Kotlin Siklus Proses
API Siklus Proses inti di Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event, dan LifecycleRegistry kini dikirimkan dalam artefak yang kompatibel dengan Multiplatform Kotlin.
Artefak yang terpengaruh:
lifecycle-commonmemindahkan sebagian besar API kecommondan mendukung jvm dan iOS selain Android.lifecycle-runtimememindahkan sebagian besar API kecommondan mendukung jvm dan iOS selain Android.lifecycle-runtime-ktxsekarang kosong, dengan semua API dipindahkan kelifecycle-runtime.lifecycle-runtime-composememindahkan semua API kecommondan mengirimkan artefak Android, yang cocok dengan dukungan multiplatformandroidx.compose.
Kompatibilitas Multiplatform Kotlin ViewModel
Artefak lifecycle-viewmodel dan API seperti ViewModel, ViewModelStore, ViewModelStoreOwner, dan ViewModelProvider kini dikirimkan dalam artefak yang kompatibel dengan Multiplatform Kotlin.
Untuk mengakomodasi perubahan ini, metode seperti yang ada di ViewModelProvider yang menggunakan java.lang.Class<T> kini memiliki metode yang setara yang menggunakan kotlin.reflect.KClass<T>.
Kompatibilitas biner di Android telah dipertahankan, tetapi ada beberapa perubahan penting saat membandingkan permukaan API Android dengan permukaan API umum:
- Pembuatan instance
ViewModelProviderkini dilakukan melalui metodeViewModelProvider.create(), bukan dengan memanggil konstruktornya secara langsung. ViewModelProvider.NewInstanceFactorydanViewModelProvider.AndroidViewModelFactoryhanya tersedia di Android.- Factory Kustom direkomendasikan untuk diperluas dari
ViewModelProvider.Factorydan menggunakan metodecreateyang menggunakanCreationExtrasatau menggunakan DSL KotlinviewModelFactory.
- Factory Kustom direkomendasikan untuk diperluas dari
- Menggunakan
ViewModelProvidertanpa factory kustom di platform non-JVM akan menghasilkanUnsupportedOperationException. Di platform JVM, kompatibilitas dipertahankan dengan menggunakan konstruktor ViewModel tanpa argumen jika factory kustom tidak disediakan. viewModelScopeakan dikembalikan keEmptyCoroutineContextdi platform yang tidak menyediakanDispatchers.Main(misalnya, Linux).
Artefak yang terpengaruh:
lifecycle-viewmodelmemindahkan sebagian besar API kecommondan mendukung jvm dan iOS selain Android.lifecycle-viewmodel-ktxsekarang kosong, dengan semua API dipindahkan kelifecycle-viewmodel.lifecycle-viewmodel-composememindahkan semua API kecommondan mengirimkan artefak Android, yang cocok dengan dukungan multiplatformandroidx.compose.
Perubahan Perilaku
InitializerViewModelFactory(termasuk fungsi builderviewModelFactory) kini akan menampilkanIllegalArgumentExceptionjikainitializerdenganclazz: KClass<VM : ViewModel>yang sama telah ditambahkan. (Ic3a36)
Masalah Umum
lifecycle-*:2.8.0memerlukan Compose versi minimum 1.7.0-alpha05 (b/336842920).
Versi 2.8.0-rc01
1 Mei 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 dirilis. Versi 2.8.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat Profil Dasar untuk class
lifecycle-commontidak dikemas dengan benar. Sekarang, library ini dikemas dalam AARlifecycle-runtime. (aosp/3038274, b/322382422) - Memperbaiki perubahan urutan yang tidak disengaja dalam cara instance
AutoCloseableyang terlampir ke ViewModel dibersihkan - urutan sebelumnyaaddCloseable(String, AutoCloseable), laluaddClosable(AutoCloseable), laluonCleared()telah dipulihkan. (aosp/3041632) - Meningkatkan kualitas perilaku pembuatan default untuk
viewModelScopeuntuk lingkungan Desktop Native dan JVM. (aosp/3039221)
Kontribusi Eksternal
- Terima kasih kepada Victor Kropp yang telah meningkatkan pemeriksaan thread utama di JVM Desktop. (aosp/3037116)
Versi 2.8.0-beta01
17 April 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01 dirilis. Versi 2.8.0-beta01 berisi commit ini.
Fitur Baru
- Artefak
lifecycle-runtime-composekini kompatibel dengan Multiplatform Kotlin, memindahkan kodenya kecommondan mengirimkan artefak Android, yang cocok dengan dukungan multiplatform untukandroidx.compose. (If7a71, I4f4a0, b/331769623)
Versi 2.8.0-alpha04
3 April 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 dirilis. Versi 2.8.0-alpha04 berisi commit ini.
Fitur Baru
- Artefak
lifecycle-viewmodel-composekini kompatibel dengan Multiplatform Kotlin, memindahkan kodenya kecommondan mengirimkan artefak Android, yang cocok dengan dukungan multiplatformandroidx.compose. Untuk mengakomodasi perubahan ini, metode ComposableviewModelkini menerimaKClassselainjava.lang.Class. (b/330323282)
Perbaikan Bug
NullSafeMutableLiveDatatelah di-refactor untuk menghindari banyak positif palsu. (I2d8c1, Iafb18, I03463, I7ecef)
Pembaruan dependensi
- Artefak
lifecycle-viewmodel-composekini bergantung pada Compose 1.6.0. - Lifecycle sekarang bergantung pada Profile Installer 1.3.1.
Versi 2.8.0-alpha03
20 Maret 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 dirilis. Versi 2.8.0-alpha03 berisi commit ini.
Fitur Baru
ViewModel.viewModelScopekini menjadi parameter konstruktor yang dapat diganti, sehingga Anda dapat menyuntikkan dispatcher danSupervisorJob()sendiri atau mengganti setelan default dengan menggunakanbackgroundScopeyang tersedia dalamrunTest. (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) }
Kompatibilitas Multiplatform Kotlin
Artefak lifecycle-viewmodel dan API seperti ViewModel, ViewModelStore, ViewModelStoreOwner, dan ViewModelProvider kini dikirimkan dalam artefak yang kompatibel dengan Multiplatform Kotlin. (b/214568825)
Untuk mengakomodasi perubahan ini, metode seperti yang ada di ViewModelProvider yang menggunakan java.lang.Class<T> kini memiliki metode yang setara yang menggunakan kotlin.reflect.KClass<T>.
Kompatibilitas biner di Android telah dipertahankan, tetapi ada beberapa perubahan penting saat membandingkan permukaan API Android dengan permukaan API umum:
- Pembuatan instance
ViewModelProviderkini dilakukan melalui metodeViewModelProvider.create(), bukan dengan memanggil konstruktornya secara langsung. ViewModelProvider.NewInstanceFactorydanViewModelProvider.AndroidViewModelFactoryhanya tersedia di Android.- Factory Kustom direkomendasikan untuk diperluas dari
ViewModelProvider.Factorydan menggunakan metodecreateyang menggunakanCreationExtrasatau menggunakan DSL KotlinviewModelFactory.
- Factory Kustom direkomendasikan untuk diperluas dari
- Menggunakan
ViewModelProvidertanpa factory kustom di platform non-JVM akan menghasilkanUnsupportedOperationException. Di platform JVM, kompatibilitas dipertahankan dengan menggunakan konstruktor ViewModel tanpa argumen jika factory kustom tidak disediakan. viewModelScopeakan dikembalikan keEmptyCoroutineContextdi platform yang tidak menyediakanDispatchers.Main(misalnya, Linux).
Perubahan Perilaku
InitializerViewModelFactory(termasuk fungsi builderviewModelFactory) kini akan menampilkanIllegalArgumentExceptionjikainitializerdenganclazz: KClass<VM : ViewModel>yang sama telah ditambahkan. (Ic3a36)
Perbaikan Bug
ViewModel.getCloseablekini menangani kunci duplikat: jikakeysudah memiliki resourceAutoCloseableyang terkait dengannya, resource lama akan diganti dan ditutup dengan segera. (Ibeb67)- Mengakses
viewModelScopedariViewModelkini aman untuk thread. (If4766, b/322407038)
Kontribusi Eksternal
LocalLifecycleOwnerdipindahkan dari Compose UI ke lifecycle-runtime-compose sehingga API helper berbasis Compose-nya dapat digunakan di luar Compose UI. Terima kasih kepada Jake Wharton atas kontribusinya. (I6c41b, b/328263448)
Versi 2.8.0-alpha02
21 Februari 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 dirilis. Versi 2.8.0-alpha02 berisi commit ini.
Fitur Baru
- API
dropUnlessResumeddandropUnlessStartedtelah ditambahkan yang memungkinkan Anda melepaskan klik atau peristiwa lain yang terjadi bahkan setelahLifecycleOwnerturun di bawahLifecycle.Stateyang diberikan. Misalnya, ini dapat digunakan dengan Navigation Compose untuk menghindari penanganan peristiwa klik setelah transisi ke layar lain dimulai:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Konversi Kotlin
ViewModelsekarang ditulis di Kotlin (I16f26, b/214568825)- Ekstensi kotlin
lifecycle-viewmodel-ktxkini telah dipindahkan ke modul siklus proses dasar. (Id787b, b/274800183) - Ekstensi kotlin
lifecycle-runtime-ktxkini telah dipindahkan ke modul siklus proses dasar. (Ic3686, b/274800183) - Ekstensi kotlin
lifecycle-livedata-core-ktxkini telah dipindahkan ke modul siklus proses dasar. (I54a3d, b/274800183)
Kompatibilitas Multiplatform Kotlin
- API Siklus Proses inti di
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.Event, danLifecycleRegistrykini dikirimkan dalam artefak yang kompatibel dengan Multiplatform Kotlin. (b/317249252)
Perubahan API
- Memanggil
LifecycleStartEffectdanLifecycleResumeEffecttanpa kunci kini merupakan error, mengikuti konvensi yang sama dengan APIDisposableEffectyang dicerminkan oleh API ini. (Ib0e0c, b/323518079) ViewModelsekarang menggunakanAutoCloseable, bukanCloseable. Itu adalah perubahan yang kompatibel dengan versi lama. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)tidak digunakan lagi dan digantikan denganLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
Kontribusi Eksternal
- Terima kasih kepada Ivan Matkov dari Jetbrains yang telah membantu memindahkan Siklus Proses ke Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Versi 2.8.0-alpha01
24 Januari 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 dirilis. Versi 2.8.0-alpha01 berisi commit berikut.
Fitur Baru
ViewModelkini mendukung penambahan objekCloseabledengankeyyang memungkinkan pengambilan objek tersebut melaluigetCloseable(). (I3cf63)
Versi 2.7
Versi 2.7.0
10 Januari 2024
androidx.lifecycle:lifecycle-*:2.7.0 dirilis. Versi 2.7.0 berisi commit ini.
Perubahan penting sejak 2.6.0
TestLifecycleOwnerkini menyertakan fungsi penangguhansetCurrentState()yang memastikan bahwa perubahan status dan semua callbackLifecycleObserverselesai sebelum kembali. Khususnya, tidak seperti menetapkan properticurrentStatesecara langsung, hal ini tidak menggunakanrunBlocking, sehingga aman digunakan dalam coroutine seperti yang disediakan olehrunTest.- Ekstensi
LiveDatadarimapdanswitchMapkini mencerminkan perilakudistinctUntilChanged- jikaLiveDatamemiliki setvalue, fungsimap/switchMapakan segera dipanggil untuk mengisivaluedariLiveDatayang ditampilkan. Hal ini memastikan bahwa nilai awal akan ditetapkan sebagai bagian dari komposisi pertama (saat digunakan denganobserveAsState()), tetapi tidak mengubah perilaku pengamatan - nilai pembaruan dari sumberLiveDataakan tetap hanya berlaku setelah Anda mulai mengamatiLiveData. - Rilis ini memperbaiki masalah saat
SavedStateHandletidak memulihkan classParcelablekustom dengan benar setelah penghentian dan pembuatan ulang proses. Karena informasi jenis yang hilang oleh framework Android, array Parcelable kustom memerlukan pekerjaan tambahan (membuat array berjenis secara manual dari jenis yang tepat) dan dokumentasi tentangget,getLiveData, dangetStateFlowkini secara khusus menyebutkan batasan ini. - Aturan keep proguard yang terkait dengan
LifecycleObservertelah dihapus. Artinya, kode yang dilindungi dengan ProGuard yang ingin menggunakan API melalui refleksi (seperti menggunakan anotasi@OnLifecycleEventyang sudah lama tidak digunakan) harus menyediakan aturan keep sendiri untuk kasus penggunaannya yang spesifik.
Kemampuan Observasi Peristiwa Siklus Proses
- Sebagai alternatif untuk menggunakan
LifecycleEventObserver, Anda kini dapat mengamatiFlowdariLifecycle.Eventmelalui metode ekstensiLifecycle.asFlow(). - Pengguna Jetpack Compose kini dapat menggunakan
LifecycleEventEffectuntuk menjalankan efek samping Compose berdasarkanLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Pengguna Jetpack Compose dapat menggunakan
LifecycleStartEffectdanLifecycleResumeEffectuntuk menangani pasangan peristiwa - dimulai hingga dihentikan dan dilanjutkan hingga dijeda. API ini mencerminkan API yang ada diDisposableEffectdan cocok untuk kasus saat perubahan yang dilakukan saat status naik perlu dibatalkan saat kembali turun.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Lihat Menjalankan kode pada peristiwa siklus proses untuk mengetahui informasi selengkapnya.
Kemampuan Observasi Status Siklus Proses
Lifecycle.Statesaat ini kini dapat diamati melalui propertiLifecycle.currentStateFlow, yang menampilkanStateFlowdenganvalueadalahLifecycle.Statesaat ini.- Pengguna Jetpack Compose dapat menggunakan ekstensi
Lifecycle.currentStateAsState()untuk secara langsung mengeksposLifecycle.StatesebagaiStateCompose. Fungsi ini setara (dan alternatif yang lebih singkat) denganlifecycle.currentStateFlow.collectAsState().
Lihat Mengumpulkan status siklus proses dengan alur untuk mengetahui informasi selengkapnya.
Versi 2.7.0-rc02
13 Desember 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02 dirilis. Versi 2.7.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat
SavedStateHandletidak memulihkan classParcelablekustom dengan benar setelah penghentian dan pembuatan ulang proses. Karena informasi jenis yang hilang oleh framework Android, array Parcelable kustom memerlukan pekerjaan tambahan (membuat array berjenis secara manual dari jenis yang tepat) dan dokumentasi tentangget,getLiveData, dangetStateFlowkini secara khusus menyebutkan batasan ini. (I0b55a)
Versi 2.7.0-rc01
15 November 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 dirilis. Versi 2.7.0-rc01 berisi commit ini.
Perbaikan Bug
LifecycleStartEffectdanLifecycleResumeEffectkini dengan benar membuang dan membuat ulang blok efek jikaLifecycleOwnerdiubah. (Ia25c6)
Versi 2.7.0-beta01
1 November 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01 dirilis tanpa perubahan. Versi 2.7.0-beta01 berisi commit ini.
- Peningkatan versi beta, tidak ada perubahan besar pada versi rilis ini.
Versi 2.7.0-alpha03
18 Oktober 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 dirilis. Versi 2.7.0-alpha03 berisi commit ini.
Fitur Baru
lifecycle-runtime-testingkini berisi pemeriksaan Lint baru untuk menghindari penetapanLifecycle.StatedariTestLifecycleOwnerdengan menggunakan kolomcurrentStatesaat berada di dalam coroutine. Pemeriksaan Lint kini menyarankan penangguhansetCurrentStateyang memungkinkan penetapanLifecycle.Statetanpa pemblokiran. (Icf728, b/297880630)
Perbaikan Bug
- Memperbaiki masalah pada
LiveData.switchMapsaat menampilkan instanceLiveDatayang sama pada panggilan awal dan panggilan berikutnya akan mencegah instanceLiveDataditambahkan sebagai sumber. (Ibedcba7)
Versi 2.7.0-alpha02
6 September 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 dirilis. Versi 2.7.0-alpha02 berisi commit ini.
Fitur Baru
TestLifecycleOwnerkini menyertakan fungsi penangguhansetCurrentState()untuk memberi pengguna opsi menggunakanTestLifecycleOwnerdari dalam coroutine seperti yang disediakan olehrunTest. (I329de, b/259344129)
Perubahan API
- Semua file dari modul
lifecycle-livedata-ktxtelah dipindahkan ke modullifecycle-livedatautama. (I10c6f, b/274800183)
Perubahan Perilaku
- Ekstensi
LiveData.map()danLiveData.switchMap()kini menetapkanvaluedariLiveDatayang ditampilkan jikaLiveDatasebelumnya telah memiliki nilai yang ditetapkan, sehingga memastikan bahwa penggunaan LiveData yang dihasilkan di Jetpack Compose memiliki status yang tepat pada komposisi awal. (I91d2b, b/269479952) addCloseable()ViewModelsekarang segera menutupCloseablejikaViewModeltelah menerima panggilan keonCleared(). (I4712e, b/280294730)
Perbaikan Bug
- Dari Lifecycle
2.6.2: Memperbaiki masalah saatSavedStateHandletidak dipulihkan dengan benar setelah penghentian proses jika status dipulihkan,save()dipanggil tanpa benar-benar menyimpan status diSavedStateRegistryinduk, lalu status dipulihkan lagi. Hal ini memperbaiki interaksi antararememberSaveabledanNavHostNavigation Compose. (aosp/2729289)
Versi 2.7.0-alpha01
26 Juli 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 dirilis. Versi 2.7.0-alpha01 berisi commit ini.
Perubahan API
Lifecycle.Statekini dapat diamati Compose melaluiLifecycle.currentStateFlow, yang menampilkanStateFlowdenganvaluesebagaiLifecycle.Statesaat ini. (Ib212d, b/209684871)Lifecycle.Eventkini dapat diamati sebagaiFlowdenganLifecycle.asFlow().(If2c0f, b/176311030)- API
LifecycleResumeEffecttelah ditambahkan untuk menjalankanSideEffectCompose berdasarkan callback peristiwaLifecycle.Event.ON_RESUMEdanLifecycle.Event.ON_PAUSE. (I60386, b/235529345) - API
LifecycleStartEffecttelah ditambahkan untuk menjalankanSideEffectCompose berdasarkan callback peristiwaLifecycle.Event.ON_STARTdanLifecycle.Event.ON_STOP. (I5a8d1, b/235529345) - API
LifecycleEventEffecttelah ditambahkan untuk menjalankanSideEffectCompose berdasarkanLifecycle.Event. (Ic9794, b/235529345) - Ekstensi
Lifecycle.collectAsState()telah ditambahkan untuk mengeksposLifecycle.Statesecara langsung sebagaiStateCompose. Fungsi ini setara (dan alternatif yang lebih singkat) denganlifecycle.currentStateFlow.collectAsState(). (I11015, b/235529345)
Perbaikan Bug
- Ekstensi
LiveData.distinctUntilChanged()kini menetapkanvaluedariLiveDatayang ditampilkan jikaLiveDatasebelumnya telah ditetapkan nilainya. Hal ini tidak mengubah perilaku pengamatan - nilai yang diperbarui dariLiveDatasumber hanya akan diterapkan setelah Anda mulai mengamatiLiveDatayang ditampilkan daridistinctUntilChanged(). (Ib482f) - Aturan keep proguard yang terkait dengan
LifecycleObservertelah dihapus. Artinya, kode yang dilindungi ProGuard yang ingin menggunakan API melalui refleksi harus menyediakan aturan keep sendiri untuk kasus penggunaan spesifiknya. (Ia12fd)
Versi 2.6
Versi 2.6.2
6 September 2023
androidx.lifecycle:lifecycle-*:2.6.2 dirilis. Versi 2.6.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan
SavedStateHandletidak dipulihkan dengan benar setelah penghentian proses jika status dipulihkan,save()dipanggil tanpa benar-benar menyimpan status diSavedStateRegistryinduk, lalu status dipulihkan lagi. Hal ini memperbaiki interaksi antararememberSaveabledanNavHostNavigation Compose. (aosp/2729289)
Versi 2.6.1
22 Maret 2023
androidx.lifecycle:lifecycle-*:2.6.1 dirilis. Versi 2.6.1 berisi commit ini.
Update Dependensi
lifecycle-viewmodel-savedstatekini bergantung pada SavedState1.2.1. (cd7251)- Lifecycle sekarang bergantung pada ProfileInstaller
1.3.0. (f9d30b)
Versi 2.6.0
8 Maret 2023
androidx.lifecycle:lifecycle-*:2.6.0 dirilis. Versi 2.6.0 berisi commit ini.
Perubahan penting sejak versi 2.5.0
LiveDatakini menyertakan propertiisInitializedbaru yang menunjukkan apakah nilai eksplisit pernah ditetapkan diLiveData, memungkinkan Anda membedakan antaraliveData.valueyang menampilkannullkarena tidak ada nilai yang pernah ditetapkan atau nilainulleksplisit.MediatorLiveDatakini menyertakan konstruktor untuk menetapkan nilai awal.- Menambahkan ekstensi baru di
StateFlowdanFlowdaricollectAsStateWithLifecycle()yang dikumpulkan dari alur dan mewakili nilai terbarunya sebagai Status Compose dengan cara yang berbasis siklus proses. - Metode
Lifecycle.launchWhenXdan metodeLifecycle.whenXtidak digunakan lagi karena penggunaan dispatcher jeda dapat menyebabkan resource yang sia-sia dalam beberapa kasus. Sebaiknya gunakanLifecycle.repeatOnLifecycle. Untuk mengetahui informasi selengkapnya tentang menangguhkan pekerjaan satu kali, lihat penjelasan ini tentang alasan hal ini pada dasarnya tidak aman. - Konversi Kotlin - Sejumlah besar class Siklus Proses telah dikonversi ke Kotlin. Semua class yang dikonversi tetap mempertahankan kompatibilitas binernya dengan versi sebelumnya. Class berikut memiliki perubahan sumber yang tidak kompatibel untuk class yang ditulis di Kotlin:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
Tabel di bawah memberikan konversi sumber untuk siklus proses versi baru.
| Lifecycle 2.5 | Lifecycle 2.5 (KTX) | Lifecycle 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 |
- Nullabilitas metode
onChangeddariObserveryang dibuat di Kotlin kini cocok dengan nullabilitas jenis generik. Jika Anda inginObserver.onChanged()menerima jenis nullable, Anda harus membuat instanceObserverdengan jenis nullable. - Class ini juga dikonversi ke Kotlin, tetapi tetap kompatibel dengan sumber:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcher, danProcessLifecycleOwner
Versi 2.6.0-rc01
22 Februari 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 dirilis. Versi 2.6.0-rc01 berisi commit berikut ini.
Perbaikan Bug
- Ekstensi
LiveData.distinctUntilChanged()kini menetapkanvaluedariLiveDatayang ditampilkan jikaLiveDatasebelumnya telah ditetapkan nilainya. Hal ini tidak mengubah perilaku pengamatan - nilai yang diperbarui dariLiveDatasumber hanya akan diterapkan setelah Anda mulai mengamatiLiveDatayang ditampilkan daridistinctUntilChanged(). (Ib482f)
Versi 2.6.0-beta01
8 Februari 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 dirilis. Versi 2.6.0-beta01 berisi commit ini.
Konversi Kotlin
LifecycleOwnerkini ditulis dalam Kotlin. Ini adalah perubahan sumber yang tidak kompatibel untuk class yang ditulis di Kotlin - kini harus mengganti propertilifecycle, bukan mengimplementasikan fungsigetLifecycle()sebelumnya. (I75b4b, b/240298691)ViewModelStoreOwnerkini ada di Kotlin. Ini adalah perubahan sumber yang tidak kompatibel untuk class yang ditulis di Kotlin - kini harus mengganti propertiviewModelStore, bukan mengimplementasikan fungsigetViewModelStore()sebelumnya. (I86409, b/240298691)- Ekstensi Kotlin di
LifecycleOwneryang menyediakan kolomlifecycleScopetelah dipindahkan ke artefaklifecycle-commondarilifecycle-runtime-ktx. (I41d78, b/240298691) - Ekstensi Kotlin di
Lifecycleyang menyediakan kolomcoroutineScopetelah dipindahkan ke artefaklifecycle-commondarilifecycle-runtime-ktx. (Iabb91, b/240298691)
Versi 2.6.0-alpha05
25 Januari 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 dirilis. Versi 2.6.0-alpha05 berisi commit ini.
Konversi Kotlin
Transformationskini ditulis dalam Kotlin. Ini adalah perubahan sumber yang tidak kompatibel untuk class yang ditulis di Kotlin yang secara langsung menggunakan sintaksis sepertiTransformations.map- Kode Kotlin kini harusmenggunakan sintaksis metode ekstensi Kotlin yang sebelumnya hanya tersedia saat menggunakanlifecycle-livedata-ktx. Saat menggunakan bahasa pemrograman Java, versi metode ini yang menggunakan metodeandroidx.arch.core.util.Functiontidak digunakan lagi dan diganti dengan versi yang menggunakanFunction1Kotlin. Perubahan ini mempertahankan kompatibilitas biner. (I8e14f)ViewTreeViewModelStoreOwnerkini ditulis dalam Kotlin. Ini adalah perubahan yang tidak kompatibel dengan sumber untuk class yang ditulis di Kotlin - Anda sekarang harus mengimpor langsung dan menggunakan metode ekstensi Kotlin diViewdariandroidx.lifecycle.setViewTreeViewModelStoreOwnerdanandroidx.lifecycle.findViewTreeViewModelStoreOwneruntuk menetapkan dan menemukan pemilik yang ditetapkan sebelumnya. Ini kompatibel dengan biner dan tetap kompatibel dengan sumber untuk implementasi yang ditulis dalam bahasa pemrograman Java. (Ia06d8, Ib22d8, b/240298691)- Antarmuka
HasDefaultViewModelProviderFactorykini ditulis di Kotlin. Ini adalah perubahan sumber yang tidak kompatibel untuk class yang ditulis di Kotlin - perubahan tersebut kini harus mengganti propertidefaultViewModelProviderFactorydandefaultViewModelCreationExtras, bukan mengimplementasikan fungsi sebelumnya yang sesuai. (Iaed9c, b/240298691) Observerkini ditulis dalam Kotlin. MetodeonChanged()sekarang menggunakan namavalueuntuk parameternya. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcher, danProcessLifecycleOwnerkini ditulis di Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Versi 2.6.0-alpha04
11 Januari 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 dirilis. Versi 2.6.0-alpha04 berisi commit ini.
Fitur Baru
LiveDatakini menyertakan propertiisInitializedbaru yang menunjukkan apakah nilai eksplisit pernah ditetapkan diLiveData, memungkinkan Anda membedakan antaraliveData.valueyang menampilkannullkarena tidak ada nilai yang pernah ditetapkan atau nilainulleksplisit. (Ibd018)
Perubahan API
collectAsStateWithLifecycle()APIlifecycle-runtime-composetidak lagi dalam status eksperimental. (I09d42, b/258835424)- Metode
Lifecycle.launchWhenXdan metodeLifecycle.whenXtidak digunakan lagi karena penggunaan dispatcher jeda dapat menyebabkan resource yang sia-sia dalam beberapa kasus. Sebaiknya gunakanLifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
Konversi Kotlin
ViewTreeLifecycleOwnerkini ditulis dalam Kotlin. Ini adalah perubahan yang tidak kompatibel dengan sumber untuk class yang ditulis di Kotlin - Anda sekarang harus mengimpor langsung dan menggunakan metode ekstensi Kotlin diViewdariandroidx.lifecycle.setViewTreeLifecycleOwnerdanandroidx.lifecycle.findViewTreeLifecycleOwneruntuk menetapkan dan menemukan pemilik yang ditetapkan sebelumnya. Ini menggantikan ekstensi Kotlin sebelumnya dilifecycle-runtime-ktx. Ini kompatibel dengan biner dan tetap kompatibel dengan sumber untuk implementasi yang ditulis dalam bahasa pemrograman Java. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreamskini ditulis dalam Kotlin. Ekstensi Kotlin yang sebelumnya ada dilifecycle-reactivestreams-ktxtelah dipindahkan ke modullifecycle-reactivestreamsdan telah menjadi platform utama untuk kode yang ditulis dalam Kotlin. Ini adalah perubahan yang tidak kompatibel dengan sumber untuk kode yang ditulis dalam Kotlin jika Anda belum menggunakan API metode ekstensi Kotlin. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver, danViewModelStorekini ditulis dalam Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Perbaikan Bug
SavedStateHandletidak lagi error denganClassCastExceptionsaat memanggilget()dengan jenis class yang salah. (I6ae7c)
Versi 2.6.0-alpha03
24 Oktober 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 dirilis. Versi 2.6.0-alpha03 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah batasan antara modul Lifecycle berbeda yang tidak berfungsi sebagaimana mestinya. (I18d0d, b/249686765)
- Error yang ditampilkan oleh
LifecycleRegistry.moveToState()kini menyertakan pesan error yang lebih bermanfaat yang memberi tahu developer tentang komponen yang menyebabkan error. (Idf4b2, b/244910446)
Versi 2.6.0-alpha02
7 September 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 dirilis. Versi 2.6.0-alpha02 berisi commit ini.
Perubahan API
MediatorLiveDatakini menyertakan konstruktor untuk menetapkan nilai awal. (Ib6cc5, b/151244085)
Perbaikan Bug
- Artefak
Lifecyclekini menyertakan batasan yang memastikan bahwa semua artefak Lifecycle antar-dependensi menggunakan versi yang sama, yang otomatis mengupgrade dependensi lainnya saat satu dependensi diupgrade. 2/242871265 FlowLiveData.asFlow()kini membuatcallbackFlow, bukan menggunakan implementasiChannel-nya sendiri untuk memastikan keamanan thread dan penyimpanan konteks. (I4a8b2, b/200596935)- Fungsi
asLiveDataFlowLiveDatakini akan mempertahankan nilai awalStateFlowsaat membuat objekLiveDatabaru. (I3f530, b/157380488) - Dari Lifecycle
2.5.1: Implementasi kustomAndroidViewModelFactorysekarang memanggil fungsicreate(modelClass)dengan benar saat menggunakan konstruktor stateful denganLifecycle2.4+ (I5b315, b/238011621)
Versi 2.6.0-alpha01
29 Juni 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 dirilis. Versi 2.6.0-alpha01 berisi commit berikut.
Fitur Baru
- Menambahkan ekstensi baru di
StateFlowdanFlowdaricollectAsStateWithLifecycleyang dikumpulkan dari alur dan mewakili nilai terbarunya sebagai Status Compose dengan cara yang berbasis siklus proses. Alur dikumpulkan dan emisi baru ditetapkan ke nilai Status saat siklus proses setidaknya dalamLifecycle.Statetertentu. Saat siklus proses berada dalamLifecycle.Statetersebut, pengumpulan alur akan berhenti dan nilai Status tidak diperbarui. (I1856e, b/230557927)
Versi 2.5
Versi 2.5.1
27 Juli 2022
androidx.lifecycle:lifecycle-*:2.5.1 dirilis. Versi 2.5.1 berisi commit ini.
Perbaikan Bug
- Implementasi kustom
AndroidViewModelFactorykini memanggil fungsicreate(modelClass)dengan benar saat menggunakan konstruktorAndroidViewModelFactorystateful denganLifecycle2.4+. (I5b315, b/238011621)
Versi 2.5.0
29 Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0 dirilis. Versi 2.5.0 berisi commit ini.
Perubahan penting sejak versi 2.4.0
SavedStateHandlekini menawarkangetStateFlow()API yang menampilkanStateFlowKotlin untuk memantau perubahan nilai sebagai alternatif penggunaanLiveData.ViewModel CreationExtras - saat menulis
ViewModelProvider.Factorykustom, Anda tidak perlu lagi memperluasAndroidViewModelFactoryatauAbstractSavedStateViewModelFactoryuntuk mendapatkan akses keApplicationatauSavedStateHandle. Sebagai gantinya, kolom ini diberikan ke setiap subclassViewModelProvider.FactorysebagaiCreationExtrasmelalui overload barucreate:create(Class<T>, CreationExtras). Tambahan ini disediakan secara otomatis oleh Aktivitas atau Fragmen saat menggunakan Activity1.5.0dan 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-viewmodelsekarang menyediakanviewModelFactoryDSL Kotlin yang memungkinkan Anda menentukanViewModelProvider.Factoryterkait dengan satu atau beberapa penginisialisasi lambda, satu untuk setiap classViewModeltertentu yang didukung oleh factory kustom Anda, menggunakanCreationExtrassebagai sumber data utama.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-composekini menawarkan APIviewModel()yang menggunakan factory lambda untuk membuat instanceViewModeltanpa memerlukan pembuatanViewModelProvider.Factorykustom.// 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) }Integrasi Saver SavedStateHandle Compose - Artefak
lifecycle-viewmodel-composesekarang berisi API eksperimental baru diSavedStateHandle.saveableyang memungkinkan perilaku sepertirememberSaveabledidukung olehSavedStateHandle`ViewModel.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }Menambahkan
addCloseable()API dan overload konstruktor baru yang memungkinkan Anda menambahkan satu atau beberapa objekCloseablekeViewModelyang akan ditutup saatViewModeldihapus tanpa perlu penanganan manual dionCleared().Misalnya, untuk membuat cakupan coroutine yang dapat Anda masukkan ke ViewModel, tetapi pengontrolan dilakukan melalui pengujian, Anda dapat membuat
CoroutineScopeyang menerapkanCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }Yang kemudian dapat digunakan di konstruktor
ViewModelsambil mempertahankan masa pakai yang sama sepertiviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Perubahan perilaku
- Mencoba memindahkan
Lifecycle.StatedariINITIALIZEDkeDESTROYEDkini akan selalu menampilkanIllegalStateException, terlepas dari apakahLifecyclememiliki observer terlampir atau tidak. LifecycleRegistrykini akan menghapus observernya saat mencapai statusDESTROYED.
Versi 2.5.0-rc02
15 Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 dirilis. Versi 2.5.0-rc02 berisi commit ini.
Perbaikan Bug
ViewModelProvidertidak akan error lagi saat menggabungkan dependensi compileOnly Lifecycle versi sebelumnya dengan versi 2.5 dan yang lebih baru. (I81a66, b/230454566)
Versi 2.5.0-rc01
11 Mei 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01 dirilis. Versi 2.5.0-rc01 berisi commit ini.
Perbaikan Bug
MediatorLiveData.addSource()kini menampilkanNullPointerExceptionsaat meneruskan sumbernull, bukan menyebarkan sumbernullke observer.(Ibd0fb, b/123085232)
Versi 2.5.0-beta01
20 April 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01 dirilis. Versi 2.5.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan delegasi properti
SavedStateHandle.saveableuntuk menggunakan nama properti sebagai kunci guna mempertahankan status ke dalamSavedStateHandle(I8bb86, b/225014345)
Perbaikan Bug
- Memperbaiki masalah ketika membuat satu tingkat
NavHostdalamNavHostlainnya di tab navigasi bawah yang bukan utama akan menyebabkanIllegalStateExceptionsaat menggunakan beberapa data sebelumnya. (I11bd5, b/228865698)
Versi 2.5.0-alpha06
6 April 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 dirilis. Versi 2.5.0-alpha06 berisi commit ini.
Fitur Baru
- Menambahkan overload
MutableStateeksperimental keSavedStateHandle.saveableuntuk paritas denganrememberSaveable(I38cfe, b/224565154)
Perubahan API
CreationExtraskini bersifat abstrak, bukan tertutup. (Ib8a7a)
Perbaikan Bug
- Memperbaiki error
IllegalStateException: Already attached to lifecycleOwneryang disebabkan olehSavedStateHandleController. (I7ea47, b/215406268)
Versi 2.5.0-alpha05
23 Maret 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 dirilis. Versi 2.5.0-alpha05 berisi commit ini.
Fitur Baru
- Modul
lifecycle-viewmodel-composekini menyediakanSavedStateHandleSaver, API eksperimental yang memastikan nilai dalamSavedStateHandleterintegrasi dengan benar dengan status instance tersimpan yang sama dengan yang digunakanrememberSaveable. (Ia88b7, b/195689777)
Perubahan API
- Memperbaiki masalah kompatibilitas dengan Lifecycle 2.3 dan versi Lifecycle yang lebih baru di Java. (I52c8a, b/219545060)
Perbaikan Bug
SavedStateViewFactorysekarang mendukung penggunaanCreationExtrasmeskipun diinisialisasi denganSavedStateRegistryOwner. Jika tambahan disediakan, argumen yang diinisialisasi akan diabaikan. (I6c43b, b/224844583)
Versi 2.5.0-alpha04
9 Maret 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 dirilis. Versi 2.5.0-alpha04 berisi commit ini.
Perubahan API
SavedStateHandlekini menawarkangetStateFlow()API yang menampilkanStateFlowKotlin untuk memantau perubahan nilai sebagai alternatif penggunaanLiveData. (Iad3ab, b/178037961)
Versi 2.5.0-alpha03
23 Februari 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 dirilis. Versi 2.5.0-alpha03 berisi commit ini.
Fitur Baru
- Menambahkan API
addCloseable()dan overload konstruktor baru yang memungkinkan Anda menambahkan satu atau beberapa objekCloseablekeViewModelyang akan ditutup saatViewModeldihapus tanpa memerlukan tugas manual dionCleared(). (I55ea0) lifecycle-viewmodelkini memberikanInitializerViewModelFactoryyang memungkinkan Anda menambahkan lambda untuk menangani classViewModeltertentu, menggunakanCreationExtrassebagai sumber data utama. (If58fc, b/216687549)lifecycle-viewmodel-composekini menawarkan APIviewModel()yang menggunakan factory lambda untuk membuat instanceViewModeltanpa memerlukan pembuatanViewModelProvider.Factorykustom. (I97fbb, b/216688927)
Perubahan API
- Anda kini dapat membuat
ViewModeldenganCreationExtrasmelaluilifecycle-viewmodel-compose. (I08887, b/216688927)
Perubahan perilaku
- Mencoba memindahkan
Lifecycle.StatedariINITIALIZEDkeDESTROYEDkini akan selalu menampilkanIllegalStateException, terlepas dariLifecyclememiliki observer terlampir atau tidak. (I7c390, b/177924329) LifecycleRegistrykini akan menghapus observernya saat mencapai statusDESTROYED. (I4f8dd, b/142925860)
Versi 2.5.0-alpha02
9 Februari 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 dirilis. Versi 2.5.0-alpha02 berisi commit ini.
Perubahan API
SavedStateHandledanSavedStateViewModelFactorytelah dikonversi ke Kotlin. Tindakan ini meningkatkan nullability generik di kedua class. (Ib6ce2, b/216168263, I9647a, b/177667711)- Parameter fungsi
LiveDataswitchMapkini dapat memiliki output nullable. (I40396, b/132923666) - Ekstensi -ktx
LiveDatakini dianotasi dengan@CheckResultagar hasil tersebut digunakan saat memanggil fungsi ini. (Ia0f05, b/207325134)
Perubahan perilaku
SavedStateHandlekini menyimpan defaultValue dengan benar saat tidak ada nilai untuk kunci yang ditentukan. (I1c6ce, b/178510877)
Perbaikan Bug
- Dari Lifecycle
2.4.1: Mengupdatelifecycle-processagar bergantung pada Startup 1.1.1 untuk memastikan bahwa perbaikan yang mencegahProcessLifecycleInitializermenampilkanStartupExceptiontersedia secara default. (Ib01df, b/216490724) - Kini terdapat pesan error yang lebih baik saat class
AndroidViewModelkustom memiliki parameter dalam urutan yang salah dan mencoba membuatViewModel. (I340f7, b/177667711) - Kini Anda dapat membuat model tampilan melalui
CreationExtrasmenggunakanAndroidViewModelFactorytanpa menyetel aplikasi. (I6ebef, b/217271656)
Versi 2.5.0-alpha01
26 Januari 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 dirilis. Versi 2.5.0-alpha01 berisi commit ini.
CreationExtras ViewModel
Dengan rilis ini, kami menyiapkan dasar untuk merestrukturisasi cara pembuatan ViewModel. Sebagai ganti sekumpulan subclass ViewModelProvider.Factory kaku yang masing-masing menambahkan fungsi tambahan (memungkinkan parameter konstruktor Application melalui AndroidViewModelFactory, memungkinkan parameter konstruktor SavedStateHandle melalui SavedStateViewModelFactory dan AbstractSavedStateViewModelFactory, dll.), kami beralih ke factory stateless yang mengandalkan konsep baru, CreationExtras. (Ia7343, b/188691010, b/188541057)
Dengan perubahan ini, ViewModelProvider tidak lagi melakukan panggilan langsung ke metode create(Class<T>) sebelumnya dari ViewModelProvider.Factory. Sebaliknya, perubahan ini memanggil overload baru dari create: create(Class<T>, CreationExtras). Artinya, implementasi langsung dari instance ViewModelProvider.Factory sekarang memiliki akses ke setiap CreationExtras baru ini:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY:Stringini menyediakan akses ke kunci kustom yang Anda teruskan keViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYmenyediakan akses ke classApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYmenyediakan akses keSavedStateRegistryOwneryang digunakan untuk membuat ViewModel ini.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYmenyediakan akses keViewModelStoreOwneryang digunakan untuk membuat ViewModel ini.SavedStateHandleSupport.DEFAULT_ARGS_KEYmenyediakan akses keBundleargumen yang harus digunakan untuk membuatSavedStateHandle.
Tambahan ini disediakan secara default saat menggunakan Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01, dan Navigation 2.5.0-alpha01. Jika Anda menggunakan versi sebelumnya dari library tersebut, CreationExtras Anda akan kosong - semua subclass ViewModelProvider.Factory yang ada telah ditulis ulang untuk mendukung jalur pembuatan lama yang digunakan oleh versi sebelumnya dari library tersebut dan jalur CreationExtras yang akan digunakan selanjutnya.
CreationExtras ini memungkinkan pembuatan ViewModelProvider.Factory yang hanya meneruskan informasi yang Anda butuhkan ke setiap ViewModel tanpa bergantung pada hierarki subclass Factory yang ketat:
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
}
}
Kami menggunakan fungsi ekstensi Kotlin createSavedStateHandle() di CreationExtras dari SavedStateHandleSupport untuk membuat SavedStateHandle hanya untuk satu ViewModel yang membutuhkannya. (Ia6654, b/188541057)
CreationExtras kustom dapat diberikan dengan mengganti getDefaultViewModelCreationExtras() di ComponentActivity atau Fragment, sehingga tersedia untuk ViewModelProvider.Factory kustom sebagai bentuk injeksi berbantuan secara bawaan. Tambahan ini akan otomatis tersedia untuk Factory kustom saat digunakan langsung dengan ViewModelProvider atau saat menggunakan ekstensi properti Kotlin by viewModels() dan by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)
Perbaikan Bug
- Memperbaiki masalah saat nilai default yang diberikan
ke
SavedStateHandleakan muncul kembali setelah penghentian dan pembuatan ulang proses, meskipun nilai tersebut secara khusus dihapus dariSavedStateHandle. Konsekuensinya,SavedStateHandletidak akan lagi menggabungkan nilai default dan nilai yang dipulihkan, melainkan hanya menggunakan nilai yang dipulihkan sebagai sumber kebenaran. (I53a4b)
Versi 2.4
Versi 2.4.1
9 Februari 2022
androidx.lifecycle:lifecycle-*:2.4.1 dirilis. Versi 2.4.1 berisi commit ini.
Perbaikan Bug
- Di-backport dari Lifecycle
2.5.0-alpha01: Memperbaiki masalah saat nilai default yang diberikan keSavedStateHandleakan muncul kembali setelah penghentian dan pembuatan ulang proses, meskipun nilai tersebut secara khusus dihapus dariSavedStateHandle. Konsekuensinya,SavedStateHandletidak akan lagi menggabungkan nilai default dan nilai yang dipulihkan, melainkan hanya menggunakan nilai yang dipulihkan sebagai sumber kebenaran. (I53a4b) lifecycle-processkini bergantung pada Androidx Startup 1.1.1 yang memperbaiki regresi ketika menggunakanProcessLifecycleInitializerakan menyebabkanStartupException. (b/216490724)
Versi 2.4.0
27 Oktober 2021
androidx.lifecycle:lifecycle-*:2.4.0 dirilis. Versi 2.4.0 berisi commit ini.
Perubahan penting sejak versi 2.3.0
@OnLifecycleEventtidak digunakan lagi.LifecycleEventObserveratauDefaultLifecycleObserverharus digunakan sebagai gantinya.- Library
androidx.lifecycle:lifecycle-viewmodel-composetelah ditambahkan. Class ini menyediakan composableviewModel()danLocalViewModelStoreOwner.- Perubahan yang dapat menyebabkan gangguan sumber:
ViewModelProvidertelah ditulis ulang di Kotlin. MetodeViewModelProvider.Factory.createtidak lagi mengizinkan nullable generik.
- Perubahan yang dapat menyebabkan gangguan sumber:
- API coroutine baru telah ditambahkan ke
androidx.lifecycle:lifecycle-runtime-ktx: Lifecycle.repeatOnLifecycle, API yang mengeksekusi blok kode di coroutine jika Lifecycle setidaknya berada dalam status tertentu. Blokir akan dibatalkan dan diluncurkan kembali saat siklus proses bergerak masuk dan keluar dari status target;Flow.flowWithLifecycle, API yang memunculkan nilai dari Flow upstream saat siklus proses setidaknya dalam status tertentu.DefaultLifecycleObserverdipindahkan darilifecycle.lifecycle-common-java8kelifecycle.lifecycle-common.lifecycle.lifecycle-common-java8tidak lagi menyediakan fungsi tambahan apa pun selainlifecycle.lifecycle-common, sehingga dependensi padanya dapat diganti denganlifecycle.lifecycle-common.- API non-coroutine dari
lifecycle-viewmodel-ktxtelah dipindahkan ke modullifecycle-viewmodel. lifecycle-processsekarang menggunakanandroidx.startupuntuk melakukan inisialisasiProcessLifecycleOwner.Sebelumnya, perilaku ini dilakukan oleh
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Jika sebelumnya Anda menggunakan
tools:node="remove"yang digunakanContentProvideruntuk melakukan inisialisasi siklus proses, Anda harus melakukan hal berikut ini.<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>(atau)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Versi 2.4.0-rc01
29 September 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01 dirilis tanpa perubahan dari Lifecycle 2.4.0-beta01. Versi 2.4.0-rc01 berisi commit ini.
Versi 2.4.0-beta01
15 September 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01 dirilis. Versi 2.4.0-beta01 berisi commit ini.
Perubahan API
@OnLifecycleEventtidak digunakan lagi.LifecycleEventObserveratauDefaultLifecycleObserverharus digunakan sebagai gantinya. (I5a8fa)- DefaultLifecycleObserver telah dipindahkan dari
androidx.lifecycle.lifecycle-common-java8keandroidx.lifecycle.lifecycle-common.androidx.lifecycle.lifecycle-common-java8tidak lagi menyediakan fungsi tambahan apa pun selainandroidx.lifecycle.lifecycle-common, sehingga dependensi padanya dapat diganti denganandroidx.lifecycle.lifecycle-common. (I021aa) - API non-coroutine dari
lifecycle-viewmodel-ktxtelah dipindahkan ke modullifecycle-viewmodel. (I6d5b2)
Kontribusi Eksternal
Versi 2.4.0-alpha03
4 Agustus 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 dirilis. Versi 2.4.0-alpha03 berisi commit ini.
Perubahan API
- Perubahan yang dapat menyebabkan gangguan sumber: ViewModelProvider telah ditulis ulang di Kotlin.
Metode
ViewModelProvider.Factory.createtidak lagi mengizinkan nullable generik. (I9b9f6)
Perubahan Perilaku
Lifecycle.repeatOnLifecycle:blocksekarang selalu dipanggil secara berseri saat eksekusi berulang. (Ibab33)
Kontribusi Eksternal
- Terima kasih chao2zhang karena telah memperbaiki cuplikan kode di dokumentasi
repeatOnLifecycle. #205.
Versi 2.4.0-alpha02
16 Juni 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 dirilis. Versi 2.4.0-alpha02 berisi commit ini.
Fitur Baru
- Menambahkan pemeriksaan lint
RepeatOnLifecycleWrongUsagebaru kelifecycle-runtime-ktxyang mendeteksi saatrepeateOnLifecyclesalah digunakan dionStart()atauonResume(). (706078, b/187887400)
Perubahan API
LifecycleOwner.addRepeatingJobAPI dihapus dan diganti denganLifecycle.repeatOnLifecycleyang mengikuti konkurensi terstruktur dan lebih mudah untuk dipahami. (I4a3a8)- Membuat
ProcessLifecycleInitializermenjadi publik sehinggaandroidx.startup.Initializerlainnya dapat menggunakan ini sebagai dependensi. (I94c31)
Perbaikan Bug
- Memperbaiki masalah pemeriksaan lint
NullSafeMutableLiveDatasaat kolom memiliki pengubah. (#147, b/183696616) - Memperbaiki masalah lain pada pemeriksaan lint
NullSafeMutableLiveDatasaat menggunakan generik. (#161, b/184830263)
Kontribusi Eksternal
- Terima kasih maxsav karena telah mengoptimalkan pemeriksaan lint
NullSafeMutableLiveData. (#147, b/183696616) - Terima kasih kozaxinan karena telah mengoptimalkan pemeriksaan lint
NullSafeMutableLiveData. (#161, b/184830263)
Versi 2.4.0-alpha01
24 Maret 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit ini.
Perubahan Perilaku
lifecycle-processsekarang menggunakanandroidx.startupuntuk melakukan inisialisasiProcessLifecycleOwner.Sebelumnya, perilaku ini dilakukan oleh
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Jika sebelumnya Anda menggunakan
tools:node="remove"yang digunakanContentProvideruntuk melakukan inisialisasi siklus proses, Anda harus melakukan hal berikut ini.<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>(atau)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Perubahan API
- Menambahkan
Flow.flowWithLifecycleAPI yang memunculkan nilai dari Flow upstream saat siklus proses setidaknya berada dalam status tertentu menggunakanLifecycle.repeatOnLifecycleAPI. Ini merupakan alternatif untukLifecycleOwner.addRepeatinJobAPI yang juga baru. (I0f4cd)
Perbaikan Bug
- Dari Lifecycle 2.3.1: Aturan lint
NonNullableMutableLiveDatasekarang dapat dengan tepat membedakan setiap variabel kolom dengan nullability yang berbeda. (b/169249668)
Lifecycle Viewmodel Compose Versi 1.0.0
Versi 1.0.0-alpha07
16 Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API yang Dapat Menyebabkan Gangguan
viewModel()kini menggunakanViewModelStoreOwneropsional, sehingga lebih mudah untuk bekerja dengan pemilik selainLocalViewModelStoreOwner. Misalnya, kini Anda dapat menggunakanviewModel(navBackStackEntry)untuk mengambil ViewModel yang terkait dengan grafik navigasi tertentu. (I2628d, b/188693123)
Versi 1.0.0-alpha06
2 Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Diupdate agar kompatibel dengan Compose versi 1.0.0-beta08.
Versi 1.0.0-alpha05
18 Mei 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Fitur Baru
- Diupdate agar kompatibel dengan Compose versi
1.0.0-beta07.
Perbaikan Bug
- File AndroidManifest dari ui-test-manifest dan ui-tooling-data kini kompatibel dengan Android 12 (I6f9de, b/184718994)
Versi 1.0.0-alpha04
7 April 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Perubahan Dependensi
- Versi ini memungkinkan
androidx.hilt:hilt-navigation-composedanandroidx.navigation:navigation-composemenyinkronkan dependensi padaandroidx.compose.compiler:compiler:1.0.0-beta04danandroidx.compose.runtime:runtime:1.0.0-beta04. Untuk 1.0.0, compiler dan runtime harus cocok.
Versi 1.0.0-alpha03
10 Maret 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Perubahan API
LocalViewModelStoreOwner.currentkini menampilkanViewModelStoreOwnernullable untuk menentukan lebih baik apakahViewModelStoreOwnertersedia di komposisi saat ini. API yang memerlukanViewModelStoreOwner, sepertiviewModel()danNavHost, masih menampilkan pengecualian jikaViewModelStoreOwnertidak ditetapkan. (Idf39a)
Lifecycle-Viewmodel-Compose Versi 1.0.0-alpha02
24 Februari 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan API
LocalViewModelStoreOwnersekarang memiliki fungsiprovidesyang dapat digunakan denganCompositionLocalProvider, menggantikanasProvidableCompositionLocal()API. (I45d24)
Lifecycle-Viewmodel-Compose Versi 1.0.0-alpha01
10 Februari 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Fitur Baru
- Composable
viewModel()danLocalViewModelStoreOwnerdipindahkan dariandroidx.compose.ui.viewinteropke artefak ini dalam paketandroidx.lifecycle.viewmodel.compose. (I7a374)
Versi 2.3.1
Lifecycle Versi 2.3.1
24 Maret 2021
androidx.lifecycle:lifecycle-*:2.3.1 dirilis. Versi 2.3.1 berisi commit ini.
Perbaikan Bug
- Aturan lint
NonNullableMutableLiveDatasekarang dapat membedakan dengan tepat setiap variabel kolom dengan nullability yang berbeda. (b/169249668)
Versi 2.3.0
Versi 2.3.0
10 Februari 2021
androidx.lifecycle:lifecycle-*:2.3.0 dirilis. Versi 2.3.0 berisi commit ini.
Perubahan utama sejak versi 2.2.0
- Dukungan
SavedStateHandleuntuk class yang tidak dapat dibagi-bagi:SavedStateHandlekini mendukung serialisasi lambat dengan memungkinkan Anda memanggilsetSavedStateProvider()untuk kunci tertentu, sehingga menyediakanSavedStateProvideryang akan mendapatkan callback kesaveState()saatSavedStateHandlediminta untuk menyimpan statusnya. Lihat Menyimpan class yang tidak dapat dibagi-bagi. - Penerapan Perilaku Siklus Proses:
- LifecycleRegistry kini memberlakukan
DESTROYEDsebagai status terminal. LifecycleRegistrykini memverifikasi bahwa metodenya dipanggil pada thread utama. Hal ini selalu menjadi persyaratan untuk siklus proses aktivitas, fragmen, dll. Penambahan observer dari thread non-utama berakibat pada error yang sulit ditemukan dalam runtime. Untuk objekLifecycleRegistryyang dimiliki oleh komponen Anda sendiri, Anda dapat secara eksplisit memilih tidak melakukan pemeriksaan dengan menggunakanLifecycleRegistry.createUnsafe(...), tetapi Anda harus memastikan bahwa sinkronisasi yang tepat diterapkan saatLifecycleRegistryini diakses dari thread berbeda.
- LifecycleRegistry kini memberlakukan
- Status Siklus Proses dan Helper Peristiwa: Menambahkan metode helper statis
downFrom(State),downTo(State),upFrom(State),upTo(State)keLifecycle.Eventuntuk menghasilkanEventdengan mempertimbangkanStatedan arah transisi. Menambahkan metodegetTargetState()yang memberikanStateyang akan menjadi tujuan transisi Lifecycle langsung setelahEvent. withStateAtLeast: Menambahkan APILifecycle.withStateAtLeastyang menunggu status siklus proses dan menjalankan blok kode non-penangguhan secara sinkron pada saat terjadi perubahan status, lalu melanjutkan dengan hasilnya. API ini berbeda dari metodewhen*yang ada karena tidak mengizinkan dijalankannya kode penangguhan dan tidak menggunakan dispatcher khusus. (aosp/1326081)ViewTreeAPI: APIViewTreeLifecycleOwner.get(View)danViewTreeViewModelStoreOwner.get(View)baru memungkinkan Anda mengambil masing-masingLifecycleOwnerdanViewModelStoreOwnerdi dalamnya, dengan mempertimbangkan instanceView. Anda harus mengupgrade ke Activity1.2.0dan Fragment1.3.0, serta AppCompat 1.3.0-alpha01 atau yang lebih tinggi agar dapat mengisinya dengan benar. Ekstensi KotlinfindViewTreeLifecycleOwnerdanfindViewTreeViewModelStoreOwnermasing-masing tersedia dilifecycle-runtime-ktxdanlifecycle-viewmodel-ktx.- Penghentian ekstensi Kotlin
LiveData.observe(): Ekstensi KotlinLiveData.observe()yang diperlukan untuk menggunakan sintaksis lambda kini tidak digunakan lagi karena tidak diperlukan saat menggunakan Kotlin 1.4.
Versi 2.3.0-rc01
16 Desember 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit ini.
Perbaikan Bug
- Metode
keys()SavedStateHandlesekarang konsisten sebelum dan setelah status disimpan - sekarang menyertakan kunci yang sebelumnya digunakan dengansetSavedStateProvider()selain kunci yang digunakan denganset()dangetLiveData(). (aosp/1517919, b/174713653)
Kontribusi Eksternal
- API untuk menangguhkan coroutine berbasis Lifecycle sekarang menangani panggilan ke
yield()dengan lebih baik. Terima kasih Nicklas Anman Giertz! (aosp/1430830, b/168777346)
Versi 2.3.0-beta01
1 Oktober 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01 dirilis. Versi 2.3.0-beta01 berisi commit ini.
Perubahan API
- Ekstensi Kotlin
LiveData.observe()yang diperlukan untuk menggunakan sintaksis lambda kini tidak digunakan lagi karena tidak diperlukan saat menggunakan Kotlin 1.4. (I40d3f)
Perbaikan Bug
- Mengupgrade androidx untuk menggunakan Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Perubahan Dokumentasi
- Builder
liveDatadan dokumenasLiveData()telah diperbarui untuk menyertakan detail tentang mengubah nilai waktu tunggu yang diberikan. (aosp/1122324)
Versi 2.3.0-alpha07
19 Agustus 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 dirilis. Versi 2.3.0-alpha07 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah error dalam pemeriksaan Lint
NullSafeMutableLiveData. (aosp/1395367)
Versi 2.3.0-alpha06
22 Juli 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 dirilis. Versi 2.3.0-alpha06 berisi commit ini.
Fitur Baru
- Menambahkan metode helper statis
downFrom(State),downTo(State),upFrom(State),upTo(State)keLifecycle.Eventuntuk menghasilkanEventdengan mempertimbangkanStatedan arah transisi. Menambahkan metodegetTargetState()yang memberikanStateyang akan menjadi tujuan transisi Lifecycle langsung setelahEvent. (I00887) - Menambahkan
Lifecycle.withStateAtLeastAPI yang menunggu status siklus proses dan menjalankan blok kode non-penangguhan secara sinkron pada saat terjadi perubahan status, lalu melanjutkan dengan hasilnya. API ini berbeda dari metodewhen*yang ada karena tidak mengizinkan dijalankannya kode penangguhan dan tidak menggunakan dispatcher khusus. (aosp/1326081)
Perubahan Perilaku
- LifecycleRegistry kini memberlakukan
DESTROYEDsebagai status terminal. (I00887) LifecycleRegistrykini memverifikasi bahwa metodenya dipanggil pada thread utama. Hal ini selalu menjadi persyaratan untuk siklus proses aktivitas, fragmen, dll. Penambahan observer dari thread non-utama berakibat pada error yang sulit ditemukan dalam runtime. Untuk objekLifecycleRegistryyang dimiliki oleh komponen Anda sendiri, Anda dapat secara eksplisit memilih tidak melakukan pemeriksaan dengan menggunakanLifecycleRegistry.createUnsafe(...), tetapi Anda harus memastikan bahwa sinkronisasi yang tepat diterapkan saatLifecycleRegistryini diakses dari thread berbeda (Ie7280, b/137392809)
Perbaikan Bug
- Memperbaiki error di
NullSafeMutableLiveData. (b/159987480) - Memperbaiki
ObsoleteLintCustomCheckuntuk pemeriksaan Lint yang digabungkan denganlifecycle-livedata-core-ktx(dan khususnyaNullSafeMutableLiveData). (b/158699265)
Versi 2.3.0-alpha05
24 Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 dirilis. Versi 2.3.0-alpha05 berisi commit ini.
Perbaikan Bug
LiveDatakini dapat menangani kasus reentrant dengan lebih baik, menghindari panggilan duplikat keonActive()atauonInactive(). (b/157840298)- Memperbaiki masalah pemeriksaan Lint tidak berjalan saat menggunakan Android Studio 4.1 Canary 6 atau versi yang lebih tinggi. (aosp/1331903)
Versi 2.3.0-alpha04
10 Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 dirilis. Versi 2.3.0-alpha04 berisi commit ini.
Perbaikan Bug
- Memperbaiki error dalam pemeriksaan Lint
NonNullableMutableLiveData. (b/157294666) - Pemeriksaan Lint
NonNullableMutableLiveDatakini mencakup lebih banyak kasus secara signifikan ketika nilainullditetapkan padaMutableLiveDatadengan parameter jenis non-null. (b/156002218)
Versi 2.3.0-alpha03
20 Mei 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit ini.
Fitur Baru
SavedStateHandlekini mendukung serialisasi lambat sehingga Anda dapat memanggilsetSavedStateProvider()untuk kunci tertentu, menyediakanSavedStateProvideryang akan mendapatkan callback kesaveState()saatSavedStateHandlediminta untuk menyimpan statusnya. (b/155106862)ViewTreeViewModelStoreOwner.get(View)API yang baru memungkinkan Anda mengambil instanceViewberisiViewModelStoreOwner. Anda harus melakukan upgrade ke Activity1.2.0-alpha05, Fragment1.3.0-alpha05, dan AppCompat1.3.0-alpha01untuk mengisi ini dengan benar. Ekstensi KotlinfindViewModelStoreOwner()telah ditambahkan kelifecycle-viewmodel-ktx. (aosp/1295522)
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan pemeriksaan Lint
MutableLiveDatayang dirilis dalam Lifecycle2.3.0-alpha01tidak dipublikasikan bersama artefaklifecycle-livedata-core-ktx. (b/155323109)
Versi 2.3.0-alpha02
29 April 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 dirilis. Versi 2.3.0-alpha02 berisi commit ini.
Perubahan API
SavedStateViewModelFactorysekarang memungkinkan Anda meneruskanApplicationnull ke konstruktornya untuk kasus dukungan yang lebih baik jika salah satu tidak tersedia dan dukungan untukAndroidViewModeltidak diperlukan. (aosp/1285740)
Perbaikan Bug
- Meningkatkan performa cold start dengan menghindari kegagalan verifikasi class di API 28 dan perangkat yang lebih lama. (aosp/1282118)
Versi 2.3.0-alpha01
4 Maret 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 dirilis. Versi 2.3.0-alpha01 berisi commit ini.
Fitur Baru
ViewTreeLifecycleOwner.get(View)API yang baru memungkinkan Anda mengambil instanceViewberisiLifecycleOwner. Anda harus melakukan upgrade ke Activity1.2.0-alpha01dan Fragment1.3.0-alpha01untuk mengisi ini dengan benar. Ekstensi KotlinfindViewTreeLifecycleOwnertersedia dilifecycle-runtime-ktx. (aosp/1182361, aosp/1182956)- Menambahkan pemeriksaan Lint baru yang memberi Anda peringatan saat menetapkan nilai
nullpadaMutableLiveDatayang telah ditetapkan di Kotlin sebagai non-null. Opsi ini tersedia saat menggunakan artefaklivedata-core-ktxataulivedata-ktx. (aosp/1154723, aosp/1159092) - Artefak
lifecycle-runtime-testingbaru tersedia, yang menyediakanTestLifecycleOwneryang menerapkanLifecycleOwnerdan menyediakanLifecycledapat diubah yang aman untuk thread. (aosp/1242438)
Perbaikan bug
- Artefak
lifecycle-runtimesekarang memiliki nama paket yang unik. (aosp/1187196)
Versi 2.2.0
ViewModel-Savedstate Versi 2.2.0
5 Februari 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 dirilis. Versi 2.2.0 berisi commit ini.
Lifecycle ViewModel SavedState sekarang memiliki versi yang sama dengan artefak Lifecycle lainnya. Perilaku 2.2.0 identik dengan perilaku 1.0.0.
Versi 2.2.0
22 Januari 2020
androidx.lifecycle:lifecycle-*:2.2.0 dirilis. Versi 2.2.0 berisi commit ini.
Perubahan penting sejak versi 2.1.0
- Integrasi Coroutine Lifecycle: Artefak
lifecycle-runtime-ktxbaru menambahkan integrasi antara coroutine Lifecycle dan Kotlin.lifecycle-livedata-ktxjuga telah diperluas untuk memanfaatkan coroutine. Lihat Menggunakan coroutine Kotlin dengan Komponen Arsitektur untuk detail selengkapnya. - Penghentian
ViewModelProviders.of():ViewModelProviders.of()sekarang tidak digunakan lagi. Anda dapat meneruskanFragmentatauFragmentActivityke konstruktorViewModelProvider(ViewModelStoreOwner)baru untuk mendapatkan fungsionalitas yang sama saat menggunakan Fragment1.2.0. - Penghentian Artefak
lifecycle-extensions: Dengan penghentianViewModelProviders.of()di atas, rilis ini menandai penghentian API terakhir dilifecycle-extensionsdan artefak ini sekarang akan dianggap tidak digunakan lagi secara keseluruhan. Sebaiknya tetapkan dependensi pada artefak Lifecycle spesifik yang Anda perlukan (mis.lifecycle-servicejika menggunakanLifecycleServicedanlifecycle-processjika menggunakanProcessLifecycleOwner), bukanlifecycle-extensions, karena tidak akan ada rilis2.3.0selanjutnya untuklifecycle-extensions. - Pemroses Anotasi Inkremental Gradle: Pemroses anotasi Lifecycle bersifat inkremental secara default.
Jika aplikasi Anda ditulis dalam bahasa pemrograman Java 8, Anda dapat menggunakan
DefautLifecycleObserver; dan jika ditulis dalam bahasa pemrograman Java 7, Anda dapat menggunakanLifecycleEventObserver.
Versi 2.2.0-rc03
4 Desember 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 dirilis. Versi 2.2.0-rc03 berisi commit ini.
Perbaikan bug
- Memperbaiki kegagalan yang terjadi saat
ViewModeltiruan disimpan diViewModelStore, kemudian diminta dengan setelan pabrik default. - Memperbaiki penggunaan
Dispatchers.Main.immediatedalamlaunchWhenCreateddan metode serupa yang akan dipanggil secara tersinkron selama peristiwa siklus proses yang sesuai. (aosp/1156203)
Kontribusi eksternal
- Terima kasih Anders Järleberg atas kontribusinya untuk perbaikan ini! (aosp/1156203)
- Terima kasih untuk Vsevolod Tolstopyatov dari Jetbrains karena telah meninjau implementasi eksekusi sisipan.
Perubahan dependensi
- Ekstensi Lifecycle sekarang bergantung pada Fragment
1.2.0-rc03.
Versi 2.2.0-rc02
7 November 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 dirilis. Versi 2.2.0-rc02 berisi commit ini.
Perbaikan bug
- Memperbaiki bug dalam penyiapan proguard library yang memengaruhi perangkat yang menjalankan API 28+ jika API target lebih rendah dari 29. (b/142778206)
Versi 2.2.0-rc01
23 Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 dirilis. Versi 2.2.0-rc01 berisi commit ini.
Perbaikan bug
- Memperbaiki masalah yang menyebabkan
launchWhenCreateddan metode terkait berjalan satu frame lebih lambat dari metode siklus proses yang terkait karena penggunaannya atasDispatchers.Main, bukanDispatchers.Main.immediate. (aosp/1145596)
Kontribusi eksternal
- Terima kasih Nicklas Ansman atas kontribusinya dalam perbaikan ini! (aosp/1145596)
Versi 2.2.0-beta01
9 Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 dirilis. Versi 2.2.0-beta01 berisi commit ini.
Perbaikan bug
- Memperbaiki regresi yang diperkenalkan pada Lifecycle 2.2.0-alpha05 dalam pengurutan
ProcessLifecycleOwnerdanLifecycleOwneraktivitas beralih ke dimulai dan dilanjutkan di perangkat Android 10. (aosp/1128132) - Memperbaiki regresi yang diperkenalkan pada Lifecycle
2.2.0-alpha05yang menyebabkanNullPointerExceptionketika menggunakanlifecycle-processversi2.0.0atau2.1.0. (b/141536990)
Versi 2.2.0-alpha05
18 September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 dirilis. Versi 2.2.0-alpha05 berisi commit ini.
Perbaikan bug
- Memperbaiki kondisi race dalam builder livedata coroutine. b/140249349
Versi 2.2.0-alpha04
5 September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScope, dan implementasiliveDatayang mendasari kini menggunakanDispatchers.Main.immediate, bukanDispatchers.Main. (b/139740492)
Kontribusi eksternal
- Terima kasih Nicklas Ansman atas kontribusinya dalam peralihan ke
Dispatchers.Main.immediate! (aosp/1106073)
Versi 2.2.0-alpha03
7 Agustus 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Penerapan
ViewModelStoreOwnerkini dapat secara opsional menerapkanHasDefaultViewModelProviderFactoryuntuk menyediakanViewModelProvider.Factorydefault. Perubahan ini telah dilakukan untuk Activity1.1.0-alpha02, Fragment1.2.0-alpha02, dan Navigation2.2.0-alpha01. (aosp/1092370, b/135716331)
Perubahan API
ViewModelProviders.of()tidak digunakan lagi. Anda dapat meneruskanFragmentatauFragmentActivityke konstruktorViewModelProvider(ViewModelStoreOwner)yang baru untuk mendapatkan fungsionalitas yang sama. (aosp/1009889)
Versi 2.2.0-alpha02
2 Juli 2019
androidx.lifecycle:*:2.2.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
- Mengganti
LiveDataScope.initialValuedenganLiveDataScope.latestValueyang akan melacak nilai yang dikeluarkan saat ini dari blokliveData. - Menambahkan overload baru ke builder
liveDatayang menerima parametertimeoutsebagai jenisDuration
Versi 2.2.0-alpha01
7 Mei 2019
androidx.lifecycle:*:2.2.0-alpha01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Rilis ini menambahkan fitur baru yang menambahkan dukungan untuk coroutine Kotlin untuk Lifecycle dan LiveData. Dokumentasi selengkapnya dapat dilihat di sini.
ViewModel-SavedState Versi 1.0.0
Versi 1.0.0
22 Januari 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 dirilis. Versi 1.0.0 berisi commit ini.
Fitur penting dalam versi 1.0.0
- Class SavedStateHandle baru telah ditambahkan. Dengan demikian, class
ViewModelAnda dapat mengakses dan berkontribusi pada status tersimpan. Objek ini dapat diterima dalam konstruktor classViewModel, dan factory yang disediakan secara default oleh Fragment dan AppCompatActivity akan memasukkanSavedStateHandlesecara otomatis. - AbstractSavedStateViewModelFactory telah ditambahkan. Dengan demikian, Anda sekarang dapat membuat factory kustom untuk
ViewModeldan memberinya akses keSavedStateHandle.
ViewModel-Savedstate Versi 1.0.0-rc03
4 Desember 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 dirilis. Versi 1.0.0-rc03 berisi commit ini.
Perubahan dependensi
- Lifecycle ViewModel SavedState sekarang bergantung pada Lifecycle
2.2.0-rc03.
Viewmodel-Savedstate Versi 1.0.0-rc02
7 November 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 dirilis. Versi 1.0.0-rc02 berisi commit ini.
Perubahan dependensi
- Kini bergantung pada Lifecycle
2.2.0-rc02.
ViewModel-SavedState Versi 1.0.0-rc01
23 Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 dirilis tanpa perubahan dari 1.0.0-beta01. Versi 1.0.0-rc01 berisi commit ini.
ViewModel-Savedstate Versi 1.0.0-beta01
9 Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.
Perbaikan bug
- Memperbaiki masalah saat mengakses ViewModel SavedState untuk kali pertama di
Activity.onActivityResult()akan menghasilkanIllegalStateException. (b/139093676) - Memperbaiki
IllegalStateExceptionsaat menggunakanAbstractSavedStateViewModelFactory. (b/141225984)
ViewModel-SavedState Versi 1.0.0-alpha05
18 September 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Perubahan API
SavedStateViewModelFactorytidak lagi memperluasAbstractSavedStateViewModelFactorydanSavedStateHandlehanya dibuat untuk ViewModel yang memintanya aosp/1113593)
ViewModel-SavedState Versi 1.0.0-alpha03
7 Agustus 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan yang Dapat Menyebabkan Gangguan
lifecycle-viewmodel-savedstatetidak lagi bergantung padafragment, dan konstruktorSavedStateViewModelFactory(Fragment)sertaSavedStateViewModelFactory(FragmentActivity)yang terkait telah dihapus. Namun,SavedStateViewModelFactorykini menjadi factory default untuk Activity1.1.0-alpha02, Fragment1.2.0-alpha02, dan Navigation2.2.0-alpha01. (b/135716331)
ViewModel-SavedState Versi 1.0.0-alpha02
2 Juli 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Menambahkan overload
SavedStateHandle.getLiveData()yang menerima nilai default.
Perubahan API
SavedStateVMFactorydiganti namanya menjadiSavedStateViewModelFactory.AbstractSavedStateVMFactorydiganti namanya menjadiAbstractSavedStateViewModelFactory.
ViewModel-Savedstate Versi 1.0.0-alpha01
13 Maret 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 dirilis. Log commit lengkap untuk rilis awal ini dapat dilihat di sini.
Fitur baru
ViewModelssekarang dapat berkontribusi pada savedstate. Untuk melakukannya, gunakan factorySavedStateVMFactoryviewmodel yang baru saja diperkenalkan, dan ViewModel Anda harus memiliki konstruktor yang menerima objekSavedStateHandlesebagai parameter.
Versi 2.1.0
Perubahan penting sejak 2.0.0
- Menambahkan
LifecycleEventObserveruntuk situasi ketika aliran peristiwa siklus proses diperlukan. API ini merupakan API publik, bukan classGenericLifecycleObservertersembunyi. - Menambahkan ekstensi ktx untuk metode
LiveData.observedan metodeTransformations.*. - Menambahkan
Transformations.distinctUntilChanged, yang membuat objek LiveData baru yang tidak mengeluarkan nilai hingga nilaiLiveDatasumber telah diubah. - Menambahkan dukungan coroutine dalam ViewModel dengan menambahkan properti ekstensi
ViewModel.viewModelScope.
Versi 2.1.0
5 September 2019
androidx.lifecycle:lifecycle-*:2.1.0 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Versi 2.1.0-rc01
2 Juli 2019
androidx.lifecycle:*:2.1.0-rc01 dirilis tanpa perubahan dari androidx.lifecycle:*:2.1.0-beta01. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Versi 2.1.0-beta01
7 Mei 2019
androidx.lifecycle:*:2.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Lifecycle beralih ke beta: API yang diperkenalkan dalam rilis alfa sebelumnya, seperti fungsi ekstensi
liveDatauntuk transformasi dan observasi, inisialisasiViewModeldengan delegasi properti, dan lainnya distabilkan dan tidak akan berubah.
Versi 2.1.0-alpha04
3 April 2019
androidx.lifecycle:*:2.1.0-alpha04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
- Perubahan yang dapat menyebabkan gangguan: API yang digunakan di balik
by viewModels()danby activityViewModels()telah diubah untuk mendukungViewModelStoresecara langsung, bukan hanyaViewModelStoreOwner. (aosp/932932)
Versi 2.1.0-alpha03
13 Maret 2019
androidx.lifecycle:*:2.1.0-alpha03 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
ViewModelProvider.KeyedFactorytelah dihapus. Antarmuka kedua selainViewModelProvider.Factorytidak ditulis dengan baik dengan fitur-fitur baru sebagai delegasi properti di Kotlinby viewmodels {}. (aosp/914133)
Versi 2.1.0-alpha02
30 Januari 2019
androidx.lifecycle 2.1.0-alpha02 dirilis.
Perubahan API
LifecycleRegistrykini menyertakan metodesetCurrentState()untuk menggantikan metodesetState()yang sekarang sudah tidak digunakan lagi. (aosp/880715)
Perbaikan bug
- Memperbaiki masalah dengan instance
ViewModelpalsu yang mengalami error jikaViewModelStoreyang memuatnya dihapus. b/122273087
Versi 2.1.0-alpha01
17 Desember 2018
androidx.lifecycle 2.1.0-alpha01 dirilis.
Fitur baru
- Menambahkan
LifecycleEventObserveruntuk situasi ketika aliran peristiwa siklus proses diperlukan. API ini merupakan API publik, bukan classGenericLifecycleObservertersembunyi. - Menambahkan ekstensi ktx untuk metode
LiveData.observedan metodeTransformations.*. - Metode
Transformations.distinctUntilChangedtelah ditambahkan. Penambahan ini membuat objekLiveDatabaru yang tidak mengeluarkan nilai hingga nilai LiveData sumber telah diubah. - Dukungan Coroutine di ViewModel: properti ekstensi
ViewModel.viewModelScopeditambahkan. - Menambahkan
ViewModelProvider.KeyedFactory, factory untuk ViewModel yang menerimakeydanClassdalam metodecreate.
Versi 2.0.0
Versi 2.0.0
21 September 2018
Lifecycle 2.0.0 dirilis dengan satu perbaikan bug dari 2.0.0-rc01 dalam ViewModel.
Perbaikan Bug
- Memperbaiki aturan proguard ViewModel yang salah menghapus konstruktor b/112230489
Versi 2.0.0-beta01
2 Juli 2018
Perbaikan Bug
- Memperbaiki aturan proguard LifecycleObserver agar hanya menyimpan implementasi, bukan sub-antarmuka. b/71389427
- Memperbaiki aturan proguard ViewModel untuk memungkinkan obfuscation dan penyingkatan
Versi Pra-AndroidX
Untuk versi Lifecycle pra-AndroidX, sertakan dependensi berikut:
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"
}
Versi 1.1.1
21 Maret 2018
Hanya satu perubahan kecil: android.arch.core.util.Function dipindahkan dari arch:runtime ke arch:common. Pemindahan tersebut memungkinkan class ini untuk digunakan tanpa dependensi runtime, misalnya dalam paging:common di bawah.
lifecycle:common merupakan dependensi dari lifecycle:runtime sehingga perubahan ini tidak memengaruhi lifecycle:runtime secara langsung, hanya modul yang bergantung secara langsung pada lifecycle:common, seperti yang dilakukan oleh Paging.
Versi 1.1.0
22 Januari 2018
Perubahan Paket
Dependensi baru yang jauh lebih kecil sekarang tersedia:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
Perubahan API
LifecycleActivitydanLifecycleFragmentyang sudah tidak digunakan lagi sekarang telah dihapus. Harap gunakanFragmentActivity,AppCompatActivity, atau dukungFragment.- Anotasi
@NonNulltelah ditambahkan keViewModelProvidersdanViewModelStores - Konstruktor
ViewModelProviderstidak digunakan lagi. Harap gunakan metode statisnya secara langsung ViewModelProviders.DefaultFactorytidak digunakan lagi - harap gunakanViewModelProvider.AndroidViewModelFactory- Metode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)statis telah ditambahkan untuk mengambilFactorystatis yang cocok untuk membuat instanceViewModeldanAndroidViewModel.