Yaşam döngüsü
Bu tabloda, androidx.lifecycle grubundaki tüm yapılar listelenir.
| Yapı | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
|---|---|---|---|---|
| lifecycle-* | 2.10.0 | - | - | - |
| lifecycle-viewmodel-navigation3 | 2.10.0 | - | - | - |
Bağımlılıkları bildirme
Lifecycle'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.10.0" 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" // 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.10.0" 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") // 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.10.0" 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.10.0" 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") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Sürüm 2.10
Sürüm 2.10.0
19 Kasım 2025
androidx.lifecycle:lifecycle-*:2.10.0 iptal edilir. 2.10.0 sürümü şu commit'leri içerir.
2.9.0 sürümünden beri yapılan önemli değişiklikler:
Doğrudan kullanıcı arayüzünde kapsamlı yaşam döngüleri oluşturmayı etkinleştirmek için
rememberLifecycleOwnercomposable'ı ekleyin. Bu, kendi yaşam döngülerini bağımsız olarak yönetmesi gereken bileşenler (ör. yalnızca geçerli sayfayıRESUMEDyapmak isteyen birHorizontalPager) veya Navigation3 gibi kitaplıklar için yararlıdır:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }lifecycle-viewmodel-navigation3yapısı, Navigation3 için önceden oluşturulmuş bir entegrasyon sağlar. Bu sayede,rememberViewModelStoreNavEntryDecorator()API'yi kullanarak kapsam belirlemeViewModelörneklerini tek tek ekranlara ("girişler") göre etkinleştirebilirsiniz:@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }CreationExtrasiçin daha rahat ve deyimsel bir Kotlin API sağlayan bir oluşturucu fabrika işlevi ekleyin.override val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }SavedStateHandle.savediçinde null değer atanabilir türler için yerel destek eklenerek null değer atanabilir özelliklerin kaydedilmesi ve geri yüklenmesi kolaylaştırıldı.SavedStateHandleoluşturucularını@VisibleForTestingolarak işaretleyin.minSdk, API 21'den API 23'e değiştirildi.
Sürüm 2.10.0-rc01
5 Kasım 2025
androidx.lifecycle:lifecycle-*:2.10.0-rc01 iptal edilir. 2.10.0-rc01 sürümü şu commit'leri içerir.
Sürüm 2.10.0-beta01
22 Ekim 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 iptal edilir. 2.10.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
ViewModelStoreNavEntryDecoratorDefault, "s" harfi eklenerekViewModelStoreNavEntryDecoratorDefaultsolarak yeniden adlandırıldı. (I6d27b, b/444447434)
Hata Düzeltmeleri
rememberLifecycleOwner, sahibiLifeycle.State.CREATED'ye geçmeden önceLifecycle.Event.ON_DESTROYetkinliği alırsa artık kilitlenmiyor. (I6f98e, b/444594991)
Sürüm 2.10.0-alpha05
8 Ekim 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 iptal edilir. 2.10.0-alpha05 sürümü bu commit'leri içerir.
API Değişiklikleri
removeViewModelStoreOnPopCallback()artıkViewModelStoreNavEntryDecoratorDefaultnesnesinin bir parçası. Diğer platformlar ve uygulamalar varsayılanı buradan çağırabilir. (Ia1f23, b/444447434)ViewModelStoreNavEntryDecoratorişlevini,NavEntryDecoratoriçin bir fabrika olarak işlevini daha iyi yansıtacak şekilde sınıfa dönüştürdü ve bu geri çağırmanın yalnızcabackStack'den bir giriş çıkarıldığında çağrıldığını netleştirmek için dekoratörünshouldRemoveViewModelStoreparametresiniremoveViewModelStoreOnPopolarak yeniden adlandırdı. (Iefdc5, b/444447434)
Sürüm 2.10.0-alpha04
24 Eylül 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 iptal edilir. 2.10.0-alpha04 sürümü bu commit'leri içerir.
API Değişiklikleri
LifecycleOwnercomposable'ınırememberLifecycleOwnerolarak yeniden düzenleyin. İşlev artık doğrudanLifecycleOwnerdeğerini döndürüyor. Bu sahibi bir alt beste için sağlamak üzereCompositionLocalProviderkullanın. (Ic57f0, b/444446629)- JetBrains'in bu hedefleri dolduran ve böylece CMP'yi destekleyen çatallar sağlamasına olanak tanımak için lifecycle-viewmodel-navigation3'e KMP sapları ekleyin. (I44a4c)
Sürüm 2.10.0-alpha03
27 Ağustos 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 iptal edilir. 2.10.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Compose'u 1.9.0 sürümüne güncelleyin. (I2b9de)
Sürüm 2.10.0-alpha02
13 Ağustos 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 iptal edilir. 2.10.0-alpha02 sürümü bu commit'leri içerir.
Yeni Özellikler
LifecycleOwnercomposable'ı artık bağımsız bir kök yaşam döngüsü oluşturabilir.parent = nullaçıkça ayarlandığında yeni yaşam döngüsü herhangi bir ana makineden (ör.Activity,FragmentveyaNavBackStackEntry) bağımsız olarak çalışır. Birleştirilebilir öğe kompozisyona girer girmez başlar ve ayrıldığında otomatik olarak yok edilir. (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 } }
API Değişiklikleri
LifecycleOwnercomposable'ındaparentLifecycleOwnerparametresinin adıparentolarak değiştirildi. (I080bc)
Hata Düzeltmeleri
LifecycleOwnerartık elden çıkarıldığında yaşam döngüsünü doğru şekildeDESTROYEDdurumuna taşıyor. Bu, yaşam döngüsüne referans veren harici kodun olası sızıntılarını önler. (I9e5b7, b/433659048)- Varsayılan minSdk'nın API 21'den API 23'e taşınması (Ibdfca, b/380448311, b/435705964, b/435705223)
Harici Katkı (External Contribution)
LifecycleOwneröğesinden gereksiz dahili destek alanlarını kaldırın. Katkısı için Jake Wharton'a teşekkür ederiz. (Ideddb)
Sürüm 2.10.0-alpha01
30 Temmuz 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 iptal edilir. 2.10.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
Kapsamlı yaşam döngülerinin doğrudan kullanıcı arayüzünde oluşturulmasını sağlamak için
LifecycleOwnercomposable'ı ekleyin. Bu, kendi yaşam döngülerini bağımsız olarak yönetmesi gereken bileşenler için kullanışlıdır. Navigation3'ün bu yeni composable'ı nasıl entegre ettiğine dair bir örnek için aosp/3708610 adresini inceleyin. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
API Değişiklikleri
CreationExtrasiçin daha rahat ve deyimsel bir Kotlin API sağlayan bir oluşturucu fabrika işlevi ekleyin. (Iab2bd)SavedStateHandle.savediçinde null değer atanabilir türler için yerel destek eklenerek null değer atanabilir özelliklerin kaydedilmesi ve geri yüklenmesi kolaylaştırıldı. (I54d69, b/421325690)SavedStateHandleoluşturucularını@VisibleForTestingolarak işaretleyin. (Iff0e0, b/408002794)
Sürüm 2.9
Sürüm 2.9.4
17 Eylül 2025
androidx.lifecycle:lifecycle-*:2.9.4 iptal edilir. 2.9.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle KMP yapılarının bozulmasına neden olan, Compose Compiler eklentisinin uygulanmamasıyla ilgili hata düzeltildi. (Ie95bc, b/443096483, b/443965665)
Sürüm 2.9.3
27 Ağustos 2025
androidx.lifecycle:lifecycle-*:2.9.3 iptal edilir. 2.9.3 sürümü bu commit'leri içerir.
Yeni Özellikler
- Lifecycle
*-composeyapay ürünlerine yeni Kotlin Multiplatform (KMP) hedefleri ekleyin. Lifecycle artık toplamda şu platformları destekliyor: JVM (Android ve Masaüstü), Native (Linux, iOS, watchOS, macOS, MinGW) ve Web (JavaScript, WasmJS). (I0a0e4)
Hata Düzeltmeleri
androidx.annotation, 1.9.1 sürümüne güncellendi (Ic9e4f, b/397701294)
Sürüm 2.9.2
16 Temmuz 2025
androidx.lifecycle:lifecycle-*:2.9.2 iptal edilir. 2.9.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle yapay ürünlerine yeni Kotlin Multiplatform (KMP) hedefleri eklendi. Lifecycle artık toplamda şu platformları destekliyor: JVM (Android ve Masaüstü), Native (Linux, iOS, watchOS, macOS, MinGW) ve Web (JavaScript, WasmJS). Bu, Compose 1.9'un kararlı sürümüne bağlı olduğundan
*-composeyapay nesnelerine yeni KMP hedefleri eklenmediğini unutmayın. (I01cb8).
Bağımlılık güncellemeleri
- Yeni KMP hedeflerinin (Ic9e4f, b/397701294) desteklenmesi için yaşam döngüsü artık Annotation
1.9.1'a bağlıdır.
Sürüm 2.9.1
4 Haziran 2025
androidx.lifecycle:lifecycle-*:2.9.1 iptal edilir. 2.9.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
SavedStateHandle.remove(key)'nınSavedStateHandle.getMutableStateFlow(key)durumlarını temizlememesi sorununu düzeltin. (d5f939, b/418746333)
Sürüm 2.9.0
7 Mayıs 2025
androidx.lifecycle:lifecycle-*:2.9.0 iptal edilir. 2.9.0 sürümü bu commit'leri içerir.
2.8.0 sürümünden beri yapılan önemli değişiklikler
androidx.lifecycle:lifecycle-viewmodel-testingKMP yapay nesnesi,ViewModels'yi bağımsız olarak test etmek içinViewModelScenariosınıfı sağlar. AyrıcaonClearedveSavedStateHandledesteğinin yanı sırarecreate()aracılığıyla test sürecinin sonlandırılması ve yeniden oluşturulması da desteklenir.MutableStateFlowdöndürmek içinSavedStateHandleöğesinegetMutableStateFlowekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir vegetLiveDataile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur.CreationExtrasartık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor.in,+=ve+özelliklerininCreationExtrasile birlikte kullanılmasına olanak tanır.
KotlinX Serialization Support
SavedState
1.3.0'e eklenen KotlinX Serialization desteğiyle birlikte,@SerializablesınıflarınıSavedStateHandleiçinde kolayca depolamak ve bu sınıfların işlem sonlandırma ve yeniden oluşturma sırasında otomatik olarak geri yüklenmesini sağlamak içinsavedadlı tembel özellik temsilcisini kullanıma sunduk.savedtemsilcisinin tembel olduğunu ve erişilene kadarinitlambda'sını çağırmayacağını veyaSavedStateHandleiçine hiçbir şey kaydetmeyeceğini lütfen unutmayın.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
lifecycle-testingmodülü artıkTestLifecycleOwnergibi API'ler de dahil olmak üzere KMP ile uyumlu.lifecycle-viewmodel-savedstatemodülü artıkSavedStateHandlegibi API'ler de dahil olmak üzere KMP ile uyumlu.androidx.compose.ui.platform.LocalLifecycleOwnerartık ortak kaynak kümesinde kullanılabilir.NewInstanceFactoryartık JVM masaüstü ve Android hedeflerinde kullanılabilir.
Davranış Değişiklikleri
Lifecycle.DESTROYEDdurumu son durumdur ve artıkLifecycleöğesini bu durumdan başka bir duruma taşımaya yönelik her girişimIllegalStateExceptionile sonuçlanır.SavedStateHandleartık döndürülenBundle'nin boş olduğuSavedStateProvider.saveState()'leri içermiyor.
Sürüm 2.9.0-rc01
23 Nisan 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 iptal edilir. 2.9.0-rc01 sürümü bu commit'leri içerir.
Lint API Uyumluluğu Uyarısı
- JetBrains,
KaCallableMemberCallöğesini bir sınıftan arayüze değiştirdi. Bu değişiklik, ikili uyumluluğu bozuyor. Projenizin AGP sürümü, lint kontrollerini derlemek için kullanılan sürümden farklıysa bu durum kilitlenmelere neden olabilir. Bu güncelleme aosp/3577172 içinde yapılmış ancak sürüm notlarında yer almamıştı. Bu nedenle, burada açıklığa kavuşturuyoruz. Önerilen düzeltme: En son kararlı AGP'ye güncelleyin. Tam olarak güncelleyemiyorsanız lint kontrollerini AGP sürümünüzle uyumlu hale getirmek içinandroid.experimental.lint.versionkullanın. Ayrıntılar için Compose Runtime davranış değişiklikleri başlıklı makaleyi inceleyin.
Sürüm 2.9.0-beta01
9 Nisan 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 iptal edilir. 2.9.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
Lifecycle ViewModel Composeartık Compose Runtime 1.7.1 ve sonraki sürümlerle aynı Kotlin Multiplatform kurulumunu kullanıyor.-desktopyapıları kaldırıldı,-jvmStubsve-linuxx64Stubsyapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar. (I5cb14, b/406592090)
Bağımlılık Güncellemeleri
- Bu kitaplık artık Kotlin 2.0 dil seviyesini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)
Lifecycle ViewModel Composeartık Compose 1.7.8'e bağlıdır. (I5cb14, b/406592090)
Sürüm 2.9.0-alpha13
26 Mart 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13, önemli bir herkese açık değişiklik olmadan yayınlandı. 2.9.0-alpha13 sürümü bu commit'leri içerir.
Sürüm 2.9.0-alpha12
12 Mart 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 iptal edilir. 2.9.0-alpha12 sürümü bu commit'leri içerir.
API Değişiklikleri
- Desteklenen tüm KMP platformlarında
@MainThreadek açıklamasınıViewModelProvider.getöğesine ekleyin. (I7e8dd, b/397736115) SavedState*DelegatesöğesiniSavedState*Delegateolarak yeniden adlandırın. (I8589b, b/399629301)
Sürüm 2.9.0-alpha11
26 Şubat 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 iptal edilir. 2.9.0-alpha11 sürümü bu commit'leri içerir.
API Değişiklikleri
SavedStateConfigparametresinisaved()temsilcilerine ekleyin (I39b3a)
Sürüm 2.9.0-alpha10
12 Şubat 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 iptal edilir. 2.9.0-alpha10 sürümü bu commit'leri içerir.
API Değişiklikleri
MutableStateSerializeröğesinilifecycle-viewmodel-composekonumundansavedstate-composekonumuna taşıyın. (I4f690, b/378895074)
Harici Katkı (External Contribution)
- Kompozisyonda
Lifecycle::currentStateçağrılmasıyla ilgili yeni bir Lint sorunu ekler. Yaşam döngüsü durumundaki değişikliklerin yeniden oluşturmaya doğru şekilde neden olmasını sağlamak içincurrentStateAsalue().valuekullanılması önerilir. Teşekkürler Steven Schoen! (Iad484)
Sürüm 2.9.0-alpha09
29 Ocak 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 iptal edilir. 2.9.0-alpha09 sürümü bu commit'leri içerir.
Yeni Özellikler
androidx.compose.runtime.MutableStateöğesini serileştirmek içinMutableStateSerializerekleyin. (Idfc48, b/378895074)
API Değişiklikleri
- Aşırı yüklenmiş
SavedStateHandle.saved()temsilci işlevlerini varsayılan parametrelerle değiştirme (Icd1c1) AbstractSavedStateViewModelFactory, herViewModeliçin birSavedStateHandleoluşturduğundan gereksiz ek yük oluşturduğu için desteği sonlandırılmıştır. Daha verimliViewModeloluşturma için bunun yerineViewModelProvider.FactoryileCreationExtras.createSavedStateHandleözelliğini kullanın. (Ia920b, b/388590327)
Sürüm 2.9.0-alpha08
11 Aralık 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 iptal edilir. 2.9.0-alpha08 sürümü bu commit'leri içerir.
Yeni Özellikler
- Test edilen
ViewModelve ilişkili tüm bileşenleri yeniden oluşturarak bir sistem süreci ölümünü simüle etmek içinViewModelScenario.recreateekleyin. (Id6a69, b/381063087) - İlgili
findViewTreeAPI'leri aracılığıyla alınanLifecycleOwnerveViewModelStoreOwnerörnekleri artık bir görünümün bağlantısız üst öğeleri (ör.ViewOverlay) aracılığıyla çözümlenebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için Core'un sürüm notlarına veyaViewTree.setViewTreeDisjointParentbölümündeki dokümanlara bakın. (I800f4)
API Değişiklikleri
- Adlandırmaları ve paket düzenini
SavedStateRegistryOwnerDelegateile daha tutarlı hale getirin (I8c135, b/376026744)
Hata Düzeltmeleri
- Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için şu derleyici bağımsız değişkenini kullanmalıdır:
-Xjspecify-annotations=strict(Bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (Ie4340, b/326456246) - Belge
ViewModel.onClearedtemizleme sırası. (I586c7, b/363984116)
Sürüm 2.9.0-alpha07
13 Kasım 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 iptal edilir. 2.9.0-alpha07 sürümü bu commit'leri içerir.
Kotlin Multiplatform Uyumluluğu
- Lifecycle
ViewModel SavedStateartık KMP ile uyumlu. Bu,SavedStateHandle'ı ortak kodda kullanmanıza olanak tanır. (Ib6394, b/334076622)
KotlinX Serialization Support
SavedState
1.3.0-alpha05'e eklenen KotlinX Serialization desteğiyle birlikte,@SerializablesınıflarınıSavedStateHandleiçinde kolayca depolamak ve bu sınıfların işlem sonlandırılıp yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlamak içinsavedadlı tembel özellik temsilcisini kullanıma sunduk.savedtemsilcisinin tembel olduğunu ve erişilene kadarinitlambda'sını çağırmayacağını veyaSavedStateHandleiçine hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
API Değişiklikleri
MutableStateFlowdöndürmek içinSavedStateHandleöğesinegetMutableStateFlowekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir vegetLiveDataile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur. (I04a4f, b/375408415)
Sürüm 2.9.0-alpha06
30 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 iptal edilir. 2.9.0-alpha06 sürümü bu commit'leri içerir.
Davranış Değişiklikleri
Lifecycle.DESTROYEDdurumu son durumdur veLifecycleöğesini bu durumdan başka bir duruma taşımaya yönelik tüm girişimler artıkIllegalStateExceptionile sonuçlanacaktır. (I116c4, b/370577987)SavedStateHandleartık döndürülenBundle'nin boş olduğuSavedStateProvider.saveState()'leri içermiyor. (I910b5, b/370577987)
Hata Düzeltmeleri
Lifecycle.eventFlow,LifecycledeğeriDESTROYEDolduğunda artık doğru şekilde tamamlanıyor (I293b2, b/374043130).
Sürüm 2.9.0-alpha05
16 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 sürümünde önemli bir değişiklik yok. 2.9.0-alpha05 sürümü bu commit'leri içerir.
Sürüm 2.9.0-alpha04
2 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 iptal edilir. 2.9.0-alpha04 sürümü bu commit'leri içerir.
Kotlin Multiplatform
lifecycle-viewmodel-savedstatemodülü,SavedStateHandlegibi API'lerin gelecekteki bir sürümde ortak kaynak kümesinde kullanıma sunulmasına hazırlık olarak artık KMP ile uyumlu olacak şekilde yapılandırıldı. (I503ed, I48764, b/334076622)
Sürüm 2.9.0-alpha03
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 iptal edilir. 2.9.0-alpha03 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.8.6:NullSafeMutableLiveDataLint hatası, akıllı yayınlar için daha iyi destek sunarak yanlış pozitifleri önler. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Yaşam Döngüsü
2.8.6: Yaşam Döngüsü Çalışma Zamanı Oluşturma artık Oluşturma Çalışma Zamanı1.7.1'na bağlıdır. - Lifecycle Runtime artık ProfileInstaller
1.4.0'a bağlıdır.
Sürüm 2.9.0-alpha02
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 iptal edilir. 2.9.0-alpha02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.8.5bölümünde:androidx.lifecycle.ReportFragmentProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı (External Contribution)
androidx.compose.ui.platform.LocalLifecycleOwneröğesini ortak kaynak kümesine (KMP) taşıyın. Katkısı için JetBrains'ten Ivan Matkov'a teşekkür ederiz. (8cd5d03)- Yaşam döngüsü
2.8.5: SavedStateHandle.saveable` uzantı temsilcisi artık null değerleri destekliyor. Katkısı için Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)
Sürüm 2.9.0-alpha01
7 Ağustos 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 iptal edilir. 2.9.0-alpha01 sürümü bu commit'leri içerir.
Kotlin Multiplatform
lifecycle-testingartık KMP ile uyumlu. (Iea41e)linuxArm64Kotlin Multiplatform hedefi için destek ekleyin (I139d3, b/338268719)
Yeni Özellikler
- ViewModel'leri yalıtılmış olarak test etmek için
androidx.lifecycle:lifecycle-viewmodel-testingsınıfı sağlayan yeni birViewModelScenarioKMP yapısı kullanıma sunuldu. Bu yapı,onCleared(tüm platformlar) veSavedStateHandle(yalnızca Android) için destek sunar. (337f68d, c9b3409, 9799a95c, b/264602919) ViewModelProviderileViewModeloluşturma artık iş parçacığı açısından güvenli.@MainThreadek açıklamaları kaldırıldı. (Ifd978, b/237006831)
API Değişiklikleri
- Anonim
CreationExtras.Keynesnelerin oluşturulmasını kolaylaştırmak içinCreationExtras.Key()fabrika işlevini ekleyin. (I970ee) CreationExtrasartık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor.in,+=ve+özelliklerininCreationExtrasile birlikte kullanılmasına olanak tanır. (Ib4353)CreationExtrasartıkequals,hashCodevetoStringyöntemlerini uyguluyor. (Ib4353)NewInstanceFactoryartık JVM masaüstü ve Android hedeflerinde kullanılabilir. (d3d0892)- Kotlin dilinin 2.0 sürümünde (I39df2) temel alınan Uygulamayı güvenli bir şekilde kullanıma sunmak için satır içi uzantı özelliği
Hata Düzeltmeleri
- AGP 7.3 veya sonraki sürümlerle (ör. R8 sürüm 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümlerle (ör. D8 sürüm 8.1) tüm derlemeler kullanılırken yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması, API modelleme aracılığıyla otomatik olarak yapıldığından kaldırıldı. AGP kullanmayan müşterilerin D8'in 8.1 veya sonraki bir sürümüne güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (If6b4c, b/345472586)
Sürüm 2.8
Sürüm 2.8.7
30 Ekim 2024
androidx.lifecycle:lifecycle-*:2.8.7 iptal edilir. 2.8.7 sürümü bu commit'leri içerir.
API Değişiklikleri
androidx.compose.ui.platform.LocalLifecycleOwnerartık ortak kaynak grubunda (KMP) kullanılabilir. (6a3f5b3)lifecycle-runtime-compose:desktopyapı kaldırıldı,-jvmStubsve-linuxx64Stubsyapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar. (6a3f5b3)
Sürüm 2.8.6
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.6 iptal edilir. 2.8.6 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveDataLint hatası, akıllı yayınlar için daha iyi destek sunarak yanlış pozitif sonuçları önler. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Lifecycle Runtime Compose artık Compose Runtime
1.7.1'a bağlıdır.
Sürüm 2.8.5
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.5 iptal edilir. 2.8.5 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
androidx.lifecycle.ReportFragmentProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı (External Contribution)
SavedStateHandle.saveableuzantı temsilcisi artık boş değerleri destekliyor. Katkısı için Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)
Sürüm 2.8.4
24 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.4 iptal edilir. 2.8.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
LiveData.asFlow()artık, döndürülen Flow'unLiveDataüzerinde önceden ayarlanmış bir değer alındıktan hemen sonra tamamlandığı durumları (örneğin,take(1)kullanılırken) doğru şekilde işliyor. (I9c566)Lifecycle*Effecttamamlama işlemi artık idempotent'tır (yanionStopOrDispose, Lifecycle durdurulduğu için çağrıldıysa Lifecycle tekrarSTARTEDdurumuna dönmediği sürece elden çıkarma sırasında ikinci kez çağrılmaz). (I5f607, b/352364595)
Sürüm 2.8.3
1 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.3 iptal edilir. 2.8.3 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Kod küçültme kullanılırken Lifecycle 2.8'in Compose 1.6.0 ve önceki sürümlerle geriye dönük uyumluluğuyla ilgili sorun düzeltildi. (aosp/3133056, b/346808608)
Sürüm 2.8.2
12 Haziran 2024
androidx.lifecycle:lifecycle-*:2.8.2 iptal edilir. 2.8.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle 2.8.X'i Compose 1.6.X veya daha eski bir sürümle kullanırken oluşan
CompositionLocal LocalLifecycleOwner not presenthataları düzeltildi. Artık Lifecycle 2.8.2'yi Compose'un herhangi bir sürümüyle geçici çözümler kullanmadan kullanabilirsiniz. (aosp/3105647, b/336842920) ViewModelProvider,compileOnlyYaşam Döngüsü bağımlılıklarının önceki sürümleri 2.8 ve sonraki sürümlerle karıştırıldığında artık kilitlenmeyecek. Böylece LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltilecek. (I80383, b/341792251)
Sürüm 2.8.1
29 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.1 iptal edilir. 2.8.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
lifecycle-viewmodel-composeartık yalnızcacompose-runtimeile ortak bağımlılığa sahip vecompose-uiile ortak bağımlılığı kaldırıldı. Android yapısı, uyumluluk içincompose-uiözelliğini korur. (aosp/3079334, b/339562627)ViewModel'nınsaveableentegrasyonu, özellik temsilcilerini kullanarak artık otomatik olarak oluşturulan anahtarın bir parçası olarak sınıf adını kullanıyor. Böylece, birden fazla sınıf aynıSavedStateHandle'ı kullanıyorsa çakışmalar önleniyor. (aosp/3063463)
Sürüm 2.8.0
14 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0 iptal edilir. 2.8.0 sürümü bu commit'leri içerir.
2.7.0 sürümünden beri yapılan önemli değişiklikler
LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzü dışında kullanılabilmesi için Compose kullanıcı arayüzündenlifecycle-runtime-compose'ye taşındı.lifecycle-runtime-composeyapısı artıkdropUnlessResumedvedropUnlessStartedAPI'lerini içeriyor. Bu API'ler,LifecycleOwnerdeğeri verilenLifecycle.Statedeğerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }ViewModel.viewModelScopeartık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi veSupervisorJob()öğenizi ekleyebilir veyarunTestiçinde bulunanbackgroundScopeöğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }ViewModel, Kotlin'de yeniden yazıldı ve artıkCloseableyerineAutoClosablekullanılıyor. ArtıkAutoCloseablenesneleri eklemeyi destekliyor. Bu nesneler,getCloseable()üzerinden alınmalarını sağlayan birkeyile birlikte ekleniyor.LifecycleStartEffectveLifecycleResumeEffectAPI'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığıDisposableEffectAPI ile aynı kural geçerlidir.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)yerineLiveData.toPublisher(lifecycleOwner)desteği sonlandırıldı.lifecycle-livedata-core-ktxKotlin uzantıları artıklifecycle-livedata-coremodülüne taşındı.Birçok yanlış pozitif sonucu önlemek için
NullSafeMutableLiveDatayeniden düzenlendi.
Lifecycle Kotlin Multiplatform Uyumluluğu
Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry içindeki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor.
Etkilenen yapılar:
lifecycle-common, çoğu API'yicommon'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-runtime, çoğu API'yicommon'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-runtime-ktxartık boş ve tüm API'lerlifecycle-runtime'ye taşındı.lifecycle-runtime-composetüm API'lericommon'ye taşır veandroidx.compose'nin çok platformlu desteğine uygun bir Android yapısı gönderir.
ViewModel Kotlin Multiplatform Uyumluluğu
lifecycle-viewmodel yapısı ve ViewModel, ViewModelStore, ViewModelStoreOwner ve ViewModelProvider gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor.
Bu değişikliğe uyum sağlamak için ViewModelProvider üzerindekiler gibi java.lang.Class<T> alan yöntemlerin artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntemi var.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:
ViewModelProviderörneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerineViewModelProvider.create()yöntemleri aracılığıyla yapılır.ViewModelProvider.NewInstanceFactoryveViewModelProvider.AndroidViewModelFactoryyalnızca Android'de kullanılabilir.- Özel Fabrikaların
ViewModelProvider.Factory'dan genişletilmesi veCreationExtrasalancreateyönteminin kullanılması veyaviewModelFactoryKotlin DSL'sinin kullanılması önerilir.
- Özel Fabrikaların
- JVM olmayan platformlarda
ViewModelProvideröğesini özel bir fabrika olmadan kullanmakUnsupportedOperationExceptionile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu kullanılarak uyumluluk korunur. viewModelScope,Dispatchers.Main'ın kullanılamadığı platformlarda (ör.EmptyCoroutineContextLinux).
Etkilenen yapılar:
lifecycle-viewmodel, çoğu API'yicommon'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-viewmodel-ktxartık boş ve tüm API'lerlifecycle-viewmodel'ye taşındı.lifecycle-viewmodel-composetüm API'lericommon'ye taşır veandroidx.compose'nin çok platformlu desteğine uygun bir Android yapısı gönderir.
Davranış Değişiklikleri
InitializerViewModelFactory(viewModelFactoryoluşturucu işlevi dahil) artık aynıclazz: KClass<VM : ViewModel>ile birinitializerdaha önce eklenmişseIllegalArgumentExceptionhatası verecek. (Ic3a36)
Bilinen Sorunlar
lifecycle-*:2.8.0için minimum Compose sürümü 1.7.0-alpha05 (b/336842920) gerekir.
Sürüm 2.8.0-rc01
1 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 iptal edilir. 2.8.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
lifecycle-commonsınıfları için temel profilin düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artıklifecycle-runtimeAAR'sında paketleniyor. (aosp/3038274, b/322382422)- ViewModel'e eklenen
AutoCloseableörneklerinin temizlenme şeklindeki istem dışı sıralama değişikliği düzeltildi. Önceki sıralama (addCloseable(String, AutoCloseable), ardındanaddClosable(AutoCloseable), ardındanonCleared()) geri yüklendi. (aosp/3041632) - Yerel ve JVM masaüstü ortamlarında
viewModelScopeiçin varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)
Harici Katkı (External Contribution)
- JVM Desktop'ta ana mesaj dizisi kontrolünü iyileştirdiği için Victor Kropp'a teşekkür ederiz. (aosp/3037116)
Sürüm 2.8.0-beta01
17 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01 iptal edilir. 2.8.0-beta01 sürümü bu commit'leri içerir.
Yeni Özellikler
lifecycle-runtime-composeyapısı artık Kotlin Multiplatform ile uyumlu. Kodunucommon'a taşıyor veandroidx.compose'ın çok platformlu desteğine uygun bir Android yapısı gönderiyor. (If7a71, I4f4a0, b/331769623)
Sürüm 2.8.0-alpha04
3 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 iptal edilir. 2.8.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
lifecycle-viewmodel-composeyapısı artık Kotlin Multiplatform ile uyumlu. Kodunucommon'ye taşıyor veandroidx.compose'nin çok platformlu desteğine uygun bir Android yapısı gönderiyor. Bu değişikliği karşılamak için ComposableviewModelyöntemi artıkjava.lang.Class'ye ek olarakKClassde kabul ediyor. (b/330323282)
Hata Düzeltmeleri
- Birçok yanlış pozitif sonucu önlemek için
NullSafeMutableLiveDatayeniden düzenlendi. (I2d8c1, Iafb18, I03463, I7ecef)
Bağımlılık güncellemesi
lifecycle-viewmodel-composeyapısı artık Compose 1.6.0'a bağlıdır.- Yaşam döngüsü artık Profile Installer 1.3.1'e bağlıdır.
Sürüm 2.8.0-alpha03
20 Mart 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 iptal edilir. 2.8.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
ViewModel.viewModelScopeartık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi veSupervisorJob()öğenizi ekleyebilir veyarunTestiçinde bulunanbackgroundScopeöğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin Multiplatform Uyumluluğu
lifecycle-viewmodel yapısı ve ViewModel, ViewModelStore, ViewModelStoreOwner ve ViewModelProvider gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor. (b/214568825)
Bu değişikliğe uyum sağlamak için ViewModelProvider üzerindekiler gibi java.lang.Class<T> alan yöntemlerin artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntemi var.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:
ViewModelProviderörneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerineViewModelProvider.create()yöntemleri aracılığıyla yapılır.ViewModelProvider.NewInstanceFactoryveViewModelProvider.AndroidViewModelFactoryyalnızca Android'de kullanılabilir.- Özel Fabrikaların
ViewModelProvider.Factory'dan genişletilmesi veCreationExtrasalancreateyönteminin kullanılması veyaviewModelFactoryKotlin DSL'sinin kullanılması önerilir.
- Özel Fabrikaların
- JVM olmayan platformlarda
ViewModelProvideröğesini özel bir fabrika olmadan kullanmakUnsupportedOperationExceptionile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu kullanılarak uyumluluk korunur. viewModelScope,Dispatchers.Main'ın kullanılamadığı platformlarda (ör.EmptyCoroutineContextLinux).
Davranış Değişiklikleri
InitializerViewModelFactory(viewModelFactoryoluşturucu işlevi dahil) artık aynıclazz: KClass<VM : ViewModel>ile birinitializerdaha önce eklenmişseIllegalArgumentExceptionhatası verecek. (Ic3a36)
Hata Düzeltmeleri
ViewModel.getCloseableartık yinelenen anahtarları işliyor:keyile ilişkilendirilmiş birAutoCloseablekaynağı varsa eski kaynak hemen değiştirilip kapatılıyor. (Ibeb67)ViewModelöğesininviewModelScopeözelliğine erişim artık iş parçacığı açısından güvenli. (If4766, b/322407038)
Harici Katkı (External Contribution)
LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose UI dışında kullanılabilmesi için Compose UI'dan lifecycle-runtime-compose'a taşındı. Katkısı için Jake Wharton'a teşekkür ederiz. (I6c41b, b/328263448)
Sürüm 2.8.0-alpha02
21 Şubat 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 iptal edilir. 2.8.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
dropUnlessResumedvedropUnlessStartedAPI'leri eklendi. Bu API'ler,LifecycleOwnerdeğeri verilenLifecycle.Statedeğerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Kotlin Dönüşümleri
ViewModelartık Kotlin ile yazılıyor (I16f26, b/214568825)lifecycle-viewmodel-ktxKotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Id787b, b/274800183)lifecycle-runtime-ktxKotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Ic3686, b/274800183)lifecycle-livedata-core-ktxKotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (I54a3d, b/274800183)
Kotlin Multiplatform Uyumluluğu
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventveLifecycleRegistryiçindeki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor. (b/317249252)
API Değişiklikleri
LifecycleStartEffectveLifecycleResumeEffectAPI'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığıDisposableEffectAPI ile aynı kural geçerlidir. (Ib0e0c, b/323518079)ViewModelartıkCloseableyerineAutoCloseablekullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)desteği sonlandırıldı veLiveData.toPublisher(lifecycleOwner)kullanıma sunuldu. (Iabe29, b/262623005)
Harici Katkı (External Contribution)
- Lifecycle'ın Kotlin Multiplatform'a taşınmasına yardımcı olan Jetbrains'ten Ivan Matkov'a teşekkür ederiz. (aosp/2926690, I0c5ac, If445d)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 iptal edilir. 2.8.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
ViewModelartıkCloseablenesnelerininkeyile eklenmesini destekliyor. Bu sayede nesnelergetCloseable()üzerinden alınabiliyor. (I3cf63)
Sürüm 2.7
Sürüm 2.7.0
10 Ocak 2024
androidx.lifecycle:lifecycle-*:2.7.0 iptal edilir. 2.7.0 sürümü şu commit'leri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
TestLifecycleOwnerartık, döndürmeden önce durum değişikliğinin ve tümLifecycleObservergeri çağırmalarının tamamlanmasını sağlayan bir askıya alma işlevisetCurrentState()içeriyor. Özellikle,currentStateözelliğini doğrudan ayarlamaktan farklı olarak bu işlemderunBlockingkullanılmaz. Bu nedenle,runTesttarafından sağlananlar gibi bir ortak rutin içinde güvenle kullanılabilir.mapveswitchMapuzantılarıdistinctUntilChangeddavranışını yansıtır.LiveDataöğesindevalueayarlanmışsa döndürülenLiveDataöğesininvaluedeğerini doldurmak içinmap/switchMapişlevi hemen çağrılır.LiveDataBu, ilk değerin ilk bileşimde (observeAsState()ile kullanıldığında) ayarlanmasını sağlar ancak gözlem davranışını değiştirmez. KaynaktakiLiveDatadeğerlerinden gelen güncellemeler,LiveDatagözlemlenmeye başlandıktan sonra uygulanır.- Bu sürümde, işlem sonlandırılıp yeniden oluşturulduktan sonra
SavedStateHandle'nın özelParcelablesınıflarını düzgün şekilde geri yüklememesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde türlenmiş bir dizi manuel olarak oluşturulur) veget,getLiveDatavegetStateFlowile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir. LifecycleObserverile ilişkili ProGuard keep kuralları kaldırıldı. Bu nedenle, yansıtma yoluyla API'leri kullanmak isteyen (ör. uzun süredir kullanımdan kaldırılmış@OnLifecycleEventek açıklamasını kullanmak) ProGuard'lı kodun, kendi kullanım alanına özel koruma kurallarını sağlaması gerekir.
Yaşam Döngüsü Etkinliği Gözlemlenebilirliği
LifecycleEventObserverkullanmak yerine artıkLifecycle.asFlow()uzantı yöntemiyleLifecycle.EventFlowizleyebilirsiniz.- Jetpack Compose kullanıcıları artık
LifecycleEventEffectkullanarakLifecycle.Eventtabanlı Compose yan etkilerini çalıştırabilir.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose kullanıcıları, sırasıyla başlatılan ve durdurulan, devam ettirilen ve duraklatılan etkinlik çiftlerini işlemek için
LifecycleStartEffectveLifecycleResumeEffectişlevlerini kullanabilir. Bu API,DisposableEffectiçinde bulunan API'nin bir kopyasıdır ve durum yükselirken yapılan değişikliğin tekrar düşerken geri alınması gereken durumlar için uygundur.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Daha fazla bilgi için Yaşam döngüsü etkinliklerinde kod çalıştırma başlıklı makaleyi inceleyin.
Yaşam Döngüsü Durumu Gözlemlenebilirliği
- Mevcut
Lifecycle.State, artıkLifecycle.currentStateFlowözelliği aracılığıyla gözlemlenebilir. Bu özellik,valuedeğerinin mevcutLifecycle.Stateolduğu birStateFlowdöndürür. - Jetpack Compose kullanıcıları,
Lifecycle.currentStateAsState()uzantısını kullanarakLifecycle.Stateöğesini doğrudan ComposeStateolarak kullanabilir. Bu,lifecycle.currentStateFlow.collectAsState()ile eş değerdir (ve daha kısa bir alternatiftir).
Daha fazla bilgi için Yaşam döngüsü durumunu akışlarla toplama başlıklı makaleyi inceleyin.
Sürüm 2.7.0-rc02
13 Aralık 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02 iptal edilir. 2.7.0-rc02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
SavedStateHandleöğesinin, işlem sonlandırılıp yeniden oluşturulduktan sonra özelParcelablesınıflarını düzgün şekilde geri yüklememesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde türlenmiş bir dizi manuel olarak oluşturulur) veget,getLiveDatavegetStateFlowile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir. (I0b55a)
Sürüm 2.7.0-rc01
15 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 iptal edilir. 2.7.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LifecycleStartEffectveLifecycleResumeEffect,LifecycleOwnerdeğiştirilirse artık efekt bloğunu doğru şekilde kaldırıp yeniden oluşturuyor. (Ia25c6)
Sürüm 2.7.0-beta01
1 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01, herhangi bir değişiklik yapılmadan yayınlanır. 2.7.0-beta01 sürümü şu commit'leri içerir.
- Beta sürümünde artış yapıldı. Bu sürümde önemli bir değişiklik yapılmadı.
Sürüm 2.7.0-alpha03
18 Ekim 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 iptal edilir. 2.7.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
lifecycle-runtime-testingartık eşzamanlılık yordamı içindeykencurrentStatealanı kullanılarakTestLifecycleOwneröğesininLifecycle.Stateayarlanmasını önlemek için yeni bir Lint kontrolü içeriyor. Lint kontrolü artıksetCurrentStateöğesinin askıya alınmasını öneriyor. Bu sayedeLifecycle.Stateöğesi engellenmeden ayarlanabiliyor. (Icf728, b/297880630)
Hata Düzeltmeleri
- Hem ilk çağrıda hem de sonraki çağrıda aynı
LiveDataörneğinin döndürülmesinin,LiveDataörneğinin kaynak olarak eklenmesini engellemesiyle ilgiliLiveData.switchMapsorunu düzeltildi. (Ibedcba7)
Sürüm 2.7.0-alpha02
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 iptal edilir. 2.7.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
TestLifecycleOwnerartık, kullanıcılarınrunTesttarafından sağlananlar gibi bir eş yordam içindenTestLifecycleOwnerkullanma seçeneği sunmak için askıya alma işlevinisetCurrentState()içeriyor. (I329de, b/259344129)
API Değişiklikleri
lifecycle-livedata-ktxmodüllerindeki tüm dosyalar analifecycle-livedatamodülüne taşındı. (I10c6f, b/274800183)
Davranış Değişiklikleri
LiveData.map()veLiveData.switchMap()uzantıları, öncekiLiveDataiçin bir değer ayarlanmışsa döndürülenLiveDataöğesininvaluedeğerini ayarlar. Böylece, Jetpack Compose'da sonuçtaki LiveData'nın kullanılması, ilk oluşturmada doğru duruma sahip olur. (I91d2b, b/269479952)ViewModel,onCleared()için bir arama almışsaaddCloseable()artıkCloseable'ı hemen kapatıyor.ViewModel(I4712e, b/280294730)
Hata Düzeltmeleri
- Yaşam Döngüsü
2.6.2: Durum geri yüklendiyse, durum üst öğeSavedStateRegistryiçinde kaydedilmedensave()çağrıldıysa ve ardından durum tekrar geri yüklendiyse işlem sonlandırıldıktan sonraSavedStateHandleöğesinin doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. Bu,rememberSaveableile Navigation Compose'unNavHostarasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.7.0-alpha01
26 Temmuz 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 iptal edilir. 2.7.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
Lifecycle.StateartıkLifecycle.currentStateFlowüzerinden Compose'da gözlemlenebilir. Bu işlev,valuedeğerinin mevcutLifecycle.Stateolduğu birStateFlowdöndürür. (Ib212d, b/209684871)Lifecycle.Events artıkLifecycle.asFlow().ileFlowolarak gözlemlenebiliyor (If2c0f, b/176311030)LifecycleResumeEffectAPI'si, hemLifecycle.Event.ON_RESUMEhem deLifecycle.Event.ON_PAUSEetkinlik geri çağırmalarına dayalıSideEffect'leri çalıştırmak için eklendi. (I60386, b/235529345)LifecycleStartEffectAPI'si,Lifecycle.Event.ON_STARTveLifecycle.Event.ON_STOPetkinlik geri çağırmalarına dayalıSideEffect'leri çalıştırmak için eklendi. (I5a8d1, b/235529345)LifecycleEventEffectAPI,Lifecycle.EventtabanlıSideEffect'leri çalıştırmak için eklendi. (Ic9794, b/235529345)Lifecycle.collectAsState()uzantısı,Lifecycle.Stateöğesini doğrudan ComposeStateolarak kullanıma sunmak için eklendi. Bu,lifecycle.currentStateFlow.collectAsState()ile eş değerdir (ve daha kısa bir alternatiftir). (I11015, b/235529345)
Hata Düzeltmeleri
LiveData.distinctUntilChanged()uzantısı, öncekiLiveDataiçin bir değer ayarlanmışsa döndürülenLiveData'ninvaluedeğerini ayarlar. Bu durum, gözlem davranışını değiştirmez. KaynaktanLiveDatagüncellenen değerler, yalnızcadistinctUntilChanged()kaynağından döndürülenLiveDatagözlemlemeye başladığınızda uygulanır. (Ib482f)LifecycleObserverile ilişkili ProGuard keep kuralları kaldırıldı. Bu nedenle, yansıtma yoluyla API'leri kullanmak isteyen ProGuard'lı kodun, kendi özel kullanım alanı için kendi koruma kurallarını sağlaması gerekir. (Ia12fd)
Sürüm 2.6
Sürüm 2.6.2
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.6.2 iptal edilir. 2.6.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Durum geri yüklendiyse, durum üst öğe
SavedStateRegistry'ye kaydedilmedensave()çağrıldıysa ve ardından durum tekrar geri yüklendiyseSavedStateHandleöğesinin işlem sonlandırıldıktan sonra doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. Bu,rememberSaveableile Navigation Compose'unNavHostarasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.6.1
22 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.1 iptal edilir. 2.6.1 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
lifecycle-viewmodel-savedstateartık SavedState1.2.1'e bağlıdır. (cd7251)- Yaşam döngüsü artık ProfileInstaller
1.3.0'a bağlıdır. (f9d30b)
Sürüm 2.6.0
8 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.0 iptal edilir. 2.6.0 sürümü şu commit'leri içerir.
2.5.0 sürümünden beri yapılan önemli değişiklikler
LiveDataartıkLiveDataüzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni birisInitializedözelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı içinnulldöndürenliveData.valueile açık birnulldeğeri arasında ayrım yapmanıza olanak tanır.MediatorLiveDataartık ilk değeri ayarlamak için bir oluşturucu içeriyor.collectAsStateWithLifecycle()'inStateFlowveFlowüzerinde, akışlardan toplayan ve en son değerini yaşam döngüsüne duyarlı bir şekilde Compose State olarak temsil eden yeni bir uzantı eklendi.- Duraklatma dağıtıcısı kullanmak bazı durumlarda kaynak israfına yol açabileceğinden
Lifecycle.launchWhenXveLifecycle.whenXyöntemlerinin desteği sonlandırıldı.Lifecycle.repeatOnLifecyclekullanılması önerilir. Çalışmanın tek seferlik olarak askıya alınması hakkında daha fazla bilgi için lütfen bunun neden doğası gereği güvenli olmadığını açıklayan bu makaleyi inceleyin. - Kotlin Dönüşümü: Çok sayıda Lifecycle sınıfı Kotlin'e dönüştürüldü. Dönüştürülen tüm sınıflar, önceki sürümlerle ikili uyumluluklarını korur. Kotlin ile yazılan sınıflar için aşağıdaki sınıflarda kaynakla uyumlu olmayan değişiklikler yapıldı:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
Aşağıdaki tabloda, yaşam döngüsünün yeni sürümündeki kaynak dönüşümleri gösterilmektedir.
| Yaşam Döngüsü 2.5 | Yaşam Döngüsü 2.5 (KTX) | Yaşam Döngüsü 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 |
- Kotlin'de oluşturulan bir
ObserveröğesininonChangedyönteminin nullability'si artık genel türün nullability'siyle eşleşiyor.Observer.onChanged()öğesinin null değer atanabilir bir türü kabul etmesini istiyorsanızObserveröğesini null değer atanabilir bir türle başlatmanız gerekir. - Bu sınıflar da Kotlin'e dönüştürüldü ancak kaynak uyumluluğu korunuyor:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherveProcessLifecycleOwner
Sürüm 2.6.0-rc01
22 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LiveData.distinctUntilChanged()uzantısı, öncekiLiveDataiçin bir değer ayarlanmışsa döndürülenLiveData'ninvaluedeğerini ayarlar. Bu durum, gözlem davranışını değiştirmez. KaynaktanLiveDatagüncellenen değerler, yalnızcadistinctUntilChanged()kaynağından döndürülenLiveDatagözlemlemeye başladığınızda uygulanır. (Ib482f)
Sürüm 2.6.0-beta01
8 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.
Kotlin Dönüşümleri
LifecycleOwnerartık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık öncekigetLifecycle()işlevini uygulamak yerinelifecycleözelliğini geçersiz kılmalıdır. (I75b4b, b/240298691)ViewModelStoreOwnerartık Kotlin'de. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık öncekigetViewModelStore()işlevini uygulamak yerineviewModelStoreözelliğini geçersiz kılmalıdır. (I86409, b/240298691)LifecycleOwnerüzerindekilifecycleScopealanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx'denlifecycle-commonyapay eserine taşındı. (I41d78, b/240298691)LifecycleüzerindekicoroutineScopealanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx'denlifecycle-commonyapay eserine taşındı. (Iabb91, b/240298691)
Sürüm 2.6.0-alpha05
25 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 iptal edilir. 2.6.0-alpha05 sürümü şu commit'leri içerir.
Kotlin Dönüşümleri
Transformationsartık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış ve doğrudanTransformations.mapgibi söz dizimlerini kullanan sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Kotlin kodu artık daha önce yalnızcalifecycle-livedata-ktxkullanılırken kullanılabilen Kotlin uzantı yöntemi söz dizimini kullanmalıdır. Java programlama dili kullanılırkenandroidx.arch.core.util.Functionyöntemi alan bu yöntemlerin sürümleri kullanımdan kaldırılır ve KotlinFunction1alan sürümlerle değiştirilir. Bu değişiklik, ikili uyumluluğu korur. (I8e14f)ViewTreeViewModelStoreOwnerartık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için artıkView,androidx.lifecycle.setViewTreeViewModelStoreOwnerveandroidx.lifecycle.findViewTreeViewModelStoreOwnerüzerinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, ikili uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynak uyumluluğunu korur. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactoryarayüzü artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Bu sınıflar artık önceki ilgili işlevleri uygulamak yerinedefaultViewModelProviderFactoryvedefaultViewModelCreationExtrasözelliklerini geçersiz kılmalıdır. (Iaed9c, b/240298691)Observerartık Kotlin ile yazılıyor.onChanged()yöntemi artık parametresi içinvalueadını kullanıyor. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherveProcessLifecycleOwnerartık Kotlin'de yazılıyor (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Sürüm 2.6.0-alpha04
11 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 iptal edilir. 2.6.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
LiveDataartıkLiveDataüzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni birisInitializedözelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı içinnulldöndürenliveData.valueile açık birnulldeğeri arasında ayrım yapmanıza olanak tanır. (Ibd018)
API Değişiklikleri
collectAsStateWithLifecycle()lifecycle-runtime-composeAPI'leri artık deneysel durumda değil. (I09d42, b/258835424)- Duraklatma dağıtıcısı kullanmak bazı durumlarda kaynak israfına yol açabileceğinden
Lifecycle.launchWhenXveLifecycle.whenXyöntemlerinin desteği sonlandırıldı.Lifecycle.repeatOnLifecyclekullanılması önerilir. (Iafc54, b/248302832)
Kotlin Dönüşümleri
ViewTreeLifecycleOwnerartık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için artıkView,androidx.lifecycle.setViewTreeLifecycleOwnerveandroidx.lifecycle.findViewTreeLifecycleOwnerüzerinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu,lifecycle-runtime-ktx'daki önceki Kotlin uzantısının yerini alır. Bu, ikili uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynak uyumluluğunu korur. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreamsartık Kotlin ile yazılıyor. Daha öncelifecycle-reactivestreams-ktxiçinde bulunan Kotlin uzantılarılifecycle-reactivestreamsmodülüne taşındı ve Kotlin ile yazılmış kod için birincil yüzey haline geldi. Kotlin uzantı yöntemi API'lerini kullanmıyorsanız bu, Kotlin'de yazılan kod için kaynakla uyumlu olmayan bir değişikliktir. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserverveViewModelStoreartık Kotlin'de yazılıyor (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Hata Düzeltmeleri
SavedStateHandleartık yanlış sınıf türüyleget()çağrılırkenClassCastExceptionile kilitlenmiyor. (I6ae7c)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 iptal edilir. 2.6.0-alpha03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Farklı yaşam döngüsü modülleri arasındaki kısıtlamaların amaçlandığı gibi çalışmaması sorunu düzeltildi. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()tarafından oluşturulan hatalar artık geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha faydalı bir hata mesajı içeriyor. (Idf4b2, b/244910446)
Sürüm 2.6.0-alpha02
7 Eylül 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 iptal edilir. 2.6.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
MediatorLiveDataartık ilk değeri ayarlamak için bir oluşturucu içeriyor. (Ib6cc5, b/151244085)
Hata Düzeltmeleri
Lifecycleyapılar artık, birbirine bağımlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlamalar içeriyor. Bu kısıtlamalar, bir bağımlılık yükseltildiğinde diğer bağımlılıkları otomatik olarak yükseltiyor. b/242871265FlowLiveData.asFlow(), iş parçacığı güvenliğini ve bağlam korumasını sağlamak için kendiChanneluygulamasını kullanmak yerine artıkcallbackFlowoluşturuyor. (I4a8b2, b/200596935)FlowLiveData'nınasLiveDataişlevi, yeniLiveDatanesnesi oluşturulurken artıkStateFlow'nin başlangıç değerini koruyacak. (I3f530, b/157380488)- Yaşam Döngüsü
2.5.1:AndroidViewModelFactory'nin özel uygulamaları, durum bilgisi olan oluşturucuLifecycle2.4+ ile kullanılırken artıkcreate(modelClass)işlevini doğru şekilde çağırıyor (I5b315, b/238011621).
Sürüm 2.6.0-alpha01
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
StateFlowveFlowüzerinde, akışlardan toplayan ve en son değerini yaşam döngüsüne duyarlı bir şekilde Compose State olarak temsil edencollectAsStateWithLifecycleile ilgili yeni bir uzantı eklendi. Yaşam döngüsü en az belirli birLifecycle.Stateolduğunda akış toplanır ve yeni yayın, State'in değerine ayarlanır. Yaşam döngüsü buLifecycle.Statedeğerinin altına düştüğünde akış toplama işlemi durur ve durumun değeri güncellenmez. (I1856e, b/230557927)
Sürüm 2.5
Sürüm 2.5.1
27 Temmuz 2022
androidx.lifecycle:lifecycle-*:2.5.1 iptal edilir. 2.5.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
AndroidViewModelFactoryöğesinin özel uygulamaları, durum bilgisi olanAndroidViewModelFactoryoluşturucuyuLifecycle2.4+ ile kullanırken artıkcreate(modelClass)işlevini doğru şekilde çağırıyor. (I5b315, b/238011621)
Sürüm 2.5.0
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0 iptal edilir. 2.5.0 sürümü şu commit'leri içerir.
2.4.0 sürümünden beri yapılan önemli değişiklikler
SavedStateHandleartıkgetStateFlow()API'si sunuyor. Bu API,LiveDatakullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlowdöndürüyor.ViewModel CreationExtras: Özel bir
ViewModelProvider.Factoryyazarken sırasıylaApplicationveyaSavedStateHandle'ye erişmek için artıkAndroidViewModelFactoryveyaAbstractSavedStateViewModelFactory'yi genişletmek gerekmiyor. Bunun yerine, bu alanlarcreate:create(Class<T>, CreationExtras)yeni aşırı yüklemesi aracılığıylaViewModelProvider.Factoryalt sınıfının her birineCreationExtrasolarak sağlanır. Bu ekstralar, sırasıyla Activity1.5.0ve Fragment1.5.0kullanılırken Etkinliğiniz veya Parçanız tarafından otomatik olarak sağlanır.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-viewmodelartıkviewModelFactoryKotlin DSL'si sunuyor. Bu DSL,ViewModelProvider.Factoryöğenizi bir veya daha fazla lambda başlatıcı açısından tanımlamanıza olanak tanır. Özel fabrikanızın desteklediği her birViewModelsınıfı için bir başlatıcı kullanabilir ve birincil veri kaynağı olarakCreationExtrasöğesini kullanabilirsiniz.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-composeartık özel birViewModelProvider.Factoryoluşturulmasını gerektirmedenViewModelörneği oluşturmak için lambda fabrikası alan birviewModel()API sunuyor.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }SavedStateHandle Compose Saver Integration:
lifecycle-viewmodel-composeyapısı artıkSavedStateHandle.saveableiçinde yeni deneysel API'ler içeriyor. Bu API'ler,SavedStateHandleile desteklenenrememberSaveablebenzeri davranışlara olanak tanıyor.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }addCloseable()API'si veonCleared()'de herhangi bir manuel işlem yapılmasına gerek kalmadanViewModeltemizlendiğinde kapatılacak olanViewModel'ye bir veya daha fazlaCloseablenesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi.Örneğin, bir ViewModel'e yerleştirebileceğiniz ancak test yoluyla kontrol edebileceğiniz bir coroutine kapsamı oluşturmak için
Closeable'yi uygulayan birCoroutineScopeoluşturabilirsiniz:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }Bu değer,
ViewModeloluşturucunuzdaviewModelScopeile aynı kullanım ömrünü koruyarak kullanılabilir:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Davranış değişiklikleri
Lifecycle.StateöğesiniINITIALIZEDkonumundanDESTROYEDkonumuna taşımaya çalışırken artıkLifecycleöğesine bağlı bir gözlemci olup olmadığına bakılmaksızın her zamanIllegalStateExceptionhatası verilecek.LifecycleRegistryartıkDESTROYEDdurumuna ulaştığında gözlemcilerini temizleyecek.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 iptal edilir. 2.5.0-rc02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
ViewModelProvider, compileOnly Lifecycle bağımlılıklarının önceki sürümleri 2.5 ve sonraki sürümlerle karıştırıldığında artık kilitlenmeyecek. (I81a66, b/230454566)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01 iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Artık
nullkaynağı gözlemcilere yaymak yerinenullkaynağı geçirildiğindeMediatorLiveData.addSource()oluşturuyor.(Ibd0fb, b/123085232)NullPointerException
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01 iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Durumu
SavedStateHandleiçinde kalıcı hale getirmek için özellik adlarını anahtar olarak kullanmak üzereSavedStateHandle.saveableözellik temsilcileri eklendi (I8bb86, b/225014345)
Hata Düzeltmeleri
- Birincil olmayan bir alt gezinme sekmesinde bir
NavHostöğesini başka birNavHostöğesinin içine yerleştirmenin, birden fazla geri yığını kullanılırkenIllegalStateExceptionöğesine yol açmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)
Sürüm 2.5.0-alpha06
6 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 iptal edilir. 2.5.0-alpha06 sürümü şu commit'leri içerir.
Yeni Özellikler
MutableStateilerememberSaveablearasında eşitlik sağlamak içinSavedStateHandle.saveable'ye deneyselMutableStateaşırı yüklemesi ekleyin (I38cfe, b/224565154)
API Değişiklikleri
CreationExtrasartık sealed yerine abstract. (Ib8a7a)
Hata Düzeltmeleri
IllegalStateException: Already attached to lifecycleOwnerhatası düzeltildi. Bu hatayaSavedStateHandleControllerneden oluyordu. (I7ea47, b/215406268)
Sürüm 2.5.0-alpha05
23 Mart 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 iptal edilir. 2.5.0-alpha05 sürümü şu commit'leri içerir.
Yeni Özellikler
lifecycle-viewmodel-composemodülü artıkSavedStateHandleSaveradlı deneysel bir API sunuyor. Bu API,SavedStateHandleiçindeki değerlerinrememberSaveableile aynı kaydedilmiş örnek durumuyla doğru şekilde entegre edilmesini sağlıyor. (Ia88b7, b/195689777)
API Değişiklikleri
- Java'da Lifecycle 2.3 ve daha yeni Lifecycle sürümleriyle ilgili uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)
Hata Düzeltmeleri
SavedStateViewFactoryartıkSavedStateRegistryOwnerile başlatılmış olsa bileCreationExtraskullanımını destekliyor. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
Sürüm 2.5.0-alpha04
9 Mart 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 iptal edilir. 2.5.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
SavedStateHandleartıkLiveDatakullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlowdöndüren birgetStateFlow()API'si sunuyor. (Iad3ab, b/178037961)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
addCloseable()API'si veonCleared()'de herhangi bir manuel işlem yapılmasına gerek kalmadanViewModeltemizlendiğinde kapatılacak olanViewModel'ye bir veya daha fazlaCloseablenesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi. (I55ea0)lifecycle-viewmodelartıkCreationExtras'ü birincil veri kaynağı olarak kullanarak belirliViewModelsınıflarını işlemek için lambda eklemenize olanak tanıyan birInitializerViewModelFactorysunuyor. (If58fc, b/216687549)lifecycle-viewmodel-composeartık özel birViewModelProvider.Factoryoluşturulmasını gerektirmedenViewModelörneği oluşturmak için lambda fabrikası alan birviewModel()API'si sunuyor. (I97fbb, b/216688927)
API Değişiklikleri
- Artık
lifecycle-viewmodel-composeüzerindenCreationExtrasileViewModeloluşturabilirsiniz. (I08887, b/216688927)
Davranış değişiklikleri
Lifecycle.StateöğesiniINITIALIZEDkonumundanDESTROYEDkonumuna taşımaya çalışırken artıkLifecycleöğesine gözlemci eklenip eklenmediğine bakılmaksızın her zamanIllegalStateExceptionhatası verilecek. (I7c390, b/177924329)LifecycleRegistryartıkDESTROYEDdurumuna ulaştığında gözlemcilerini temizleyecek. (I4f8dd, b/142925860)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 iptal edilir. 2.5.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
SavedStateHandleveSavedStateViewModelFactory, Kotlin'e dönüştürüldü. Bu, her iki sınıftaki genel türlerin nullability özelliğini iyileştirdi. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveDataswitchMapişlev parametresi artık boş değer atanabilir bir çıkışa sahip olabilir. (I40396, b/132923666)LiveData-ktx uzantıları artık bu işlevler çağrılırken sonucun kullanılmasını zorunlu kılmak için@CheckResultile açıklama eklenmiş olarak kullanılıyor. (Ia0f05, b/207325134)
Davranış değişiklikleri
SavedStateHandleartık belirtilen anahtar için değer olmadığında defaultValue'yu düzgün şekilde saklıyor. (I1c6ce, b/178510877)
Hata Düzeltmeleri
- Yaşam döngüsü
2.4.1bölümünde:ProcessLifecycleInitializer'nınStartupExceptionoluşturmasını engelleyen düzeltmelerin varsayılan olarak kullanılabilmesi içinlifecycle-process, Startup 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724) - Özel
AndroidViewModelsınıfları yanlış sırada parametreler içerdiğinde veViewModeloluşturmaya çalıştığında artık daha iyi bir hata mesajı gösteriliyor. (I340f7, b/177667711) - Artık uygulama ayarlamadan
CreationExtrasüzerindenAndroidViewModelFactorykullanarak görünüm modeli oluşturabilirsiniz. (I6ebef, b/217271656)
Sürüm 2.5.0-alpha01
26 Ocak 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.
ViewModel CreationExtras
Bu sürümle birlikte, ViewModel oluşturma şeklini yeniden yapılandırmanın temelini atıyoruz. Her biri ek işlevsellik sağlayan (AndroidViewModelFactory aracılığıyla Application oluşturucu parametresine, SavedStateViewModelFactory ve AbstractSavedStateViewModelFactory aracılığıyla SavedStateHandle oluşturucu parametresine izin verme vb.) katı bir ViewModelProvider.Factory alt sınıfı kümesi yerine, yeni bir kavram olan CreationExtras'ye dayanan durumsuz fabrikalar dünyasına geçiyoruz. (Ia7343, b/188691010, b/188541057)
Bu değişiklikle birlikte ViewModelProvider artık ViewModelProvider.Factory'nin önceki create(Class<T>) yöntemine doğrudan çağrı yapmayacak. Bunun yerine, create işlevinin yeni bir aşırı yüklenmesini çağırır: create(Class<T>, CreationExtras). Bu nedenle, ViewModelProvider.Factory örneğinin doğrudan uygulandığı her durumda aşağıdaki yeni CreationExtras özelliklerine erişilebilir:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: BuString,ViewModelProvider.get()'ye ilettiğiniz özel anahtara erişim sağlar.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY,Applicationsınıfına erişim sağlar.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY, bu ViewModel'i oluşturmak için kullanılanSavedStateRegistryOwneröğesine erişim sağlar.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY, bu ViewModel'i oluşturmak için kullanılanViewModelStoreOwneröğesine erişim sağlar.SavedStateHandleSupport.DEFAULT_ARGS_KEY,SavedStateHandleoluşturmak için kullanılması gereken bağımsız değişkenlerinBundleerişimini sağlar.
Bu ekstralar, Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01 ve Navigation 2.5.0-alpha01 kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların eski bir sürümünü kullanıyorsanız CreationExtras boş olur. ViewModelProvider.Factory'nin mevcut tüm alt sınıfları, bu kitaplıkların eski sürümleri tarafından kullanılan eski oluşturma yolunu ve gelecekte kullanılacak CreationExtras yolunu destekleyecek şekilde yeniden yazılmıştır.
Bu CreationExtras, Fabrika alt sınıflarının katı bir hiyerarşisine güvenmeden, ihtiyacınız olan bilgileri her ViewModel'ye ileten bir ViewModelProvider.Factory oluşturmanıza olanak tanır:
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
}
}
Yalnızca ihtiyaç duyan ViewModel için SavedStateHandleSupport kaynağından CreationExtras üzerinde createSavedStateHandle() Kotlin uzantı işlevini kullanarak SavedStateHandle oluştururuz. (Ia6654, b/188541057)
Özel CreationExtras, getDefaultViewModelCreationExtras() öğesini ComponentActivity veya Fragment içinde geçersiz kılarak sağlanabilir. Böylece, özel ViewModelProvider.Factory öğenizde yerleşik bir destekli ekleme biçimi olarak kullanılabilir. Bu ekstralar, doğrudan ViewModelProvider ile kullanıldığında veya by viewModels() ve by activityViewModels() Kotlin özellik uzantıları kullanıldığında özel Factory'nizde otomatik olarak kullanılabilir. (I79f2b, b/207012584, b/207012585, b/207012490)
Hata Düzeltmeleri
SavedStateHandleöğesine sağlanan varsayılan değer, süreç sonlandırılıp yeniden oluşturulduktan sonraSavedStateHandleöğesinden özel olarak kaldırılmış olsa bile yeniden görünüyordu. Bu sorun düzeltildi. Bunun sonucundaSavedStateHandle, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)
Sürüm 2.4
Sürüm 2.4.1
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.4.1 iptal edilir. 2.4.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle
2.5.0-alpha01'dan geri taşındı:SavedStateHandle'dan özel olarak kaldırılmış olsa bile, birSavedStateHandle'a sağlanan varsayılan değerin işlem sonlandırılıp yeniden oluşturulduktan sonra tekrar görünmesine neden olan sorun düzeltildi. Bunun sonucundaSavedStateHandle, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b) lifecycle-processartık Androidx Startup 1.1.1'e bağlıdır. Bu sürümde,ProcessLifecycleInitializerkullanımınınStartupException'e neden olduğu regresyon düzeltildi. (b/216490724)
Sürüm 2.4.0
27 Ekim 2021
androidx.lifecycle:lifecycle-*:2.4.0 iptal edilir. 2.4.0 sürümü şu commit'leri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
@OnLifecycleEventdesteği sonlandırıldı. Bunun yerineLifecycleEventObserverveyaDefaultLifecycleObserverkullanılmalıdır.androidx.lifecycle:lifecycle-viewmodel-composekitaplığı eklendi.viewModel()composable veLocalViewModelStoreOwnersağlar.- Kaynakta yapılan, uyumluluğu bozan değişiklik:
ViewModelProvider, Kotlin ile yeniden yazıldı.ViewModelProvider.Factory.createyöntemi artık boş değer atanabilir genel değerlere izin vermiyor.
- Kaynakta yapılan, uyumluluğu bozan değişiklik:
androidx.lifecycle:lifecycle-runtime-ktx'ya yeni eş yordam API'leri eklendi:Lifecycle.repeatOnLifecycle, Lifecycle belirli bir durumda olduğunda bir kod bloğunu eşzamanlı yordamda yürüten API. Blok, yaşam döngüsü hedef duruma girip çıktıkça iptal edilecek ve yeniden başlatılacak.Flow.flowWithLifecycle, yaşam döngüsü belirli bir durumda olduğunda yukarı akış Flow'dan değerler yayan API.DefaultLifecycleObserver,lifecycle.lifecycle-common-java8konumundanlifecycle.lifecycle-commonkonumuna taşındı.lifecycle.lifecycle-common-java8,lifecycle.lifecycle-commonüzerinde artık ek işlevler sunmadığı içinlifecycle.lifecycle-common-java8'ya olan bağımlılıklifecycle.lifecycle-commonile değiştirilebilir.lifecycle-viewmodel-ktxkaynaklı coroutine olmayan API'lerlifecycle-viewmodelmodülüne taşındı.lifecycle-processartıkProcessLifecycleOwner'ı başlatmak içinandroidx.startupkullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializertarafından yapılıyordu.Geçmişte
tools:node="remove"işlem yaşam döngüsünü başlatmak içinContentProviderkullanmışsanız bunun yerine aşağıdakileri yapmanız gerekir.<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>(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Sürüm 2.4.0-rc01
29 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01, Lifecycle 2.4.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlandı. 2.4.0-rc01 sürümü şu commit'leri içerir.
Sürüm 2.4.0-beta01
15 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01 iptal edilir. 2.4.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
@OnLifecycleEventdesteği sonlandırıldı. Bunun yerineLifecycleEventObserverveyaDefaultLifecycleObserverkullanılmalıdır. (I5a8fa)- DefaultLifecycleObserver,
androidx.lifecycle.lifecycle-common-java8konumundanandroidx.lifecycle.lifecycle-commonkonumuna taşındı.androidx.lifecycle.lifecycle-common-java8,androidx.lifecycle.lifecycle-commonüzerinde artık ek işlevler sunmadığı içinandroidx.lifecycle.lifecycle-common-java8'ya olan bağımlılıkandroidx.lifecycle.lifecycle-commonile değiştirilebilir. (I021aa) lifecycle-viewmodel-ktxiçindeki coroutine olmayan API'lerlifecycle-viewmodelmodülüne taşındı. (I6d5b2)
Harici Katkı (External Contribution)
Sürüm 2.4.0-alpha03
4 Ağustos 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 iptal edilir. 2.4.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
- Kaynakta yapılan, uyumluluğu bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı.
ViewModelProvider.Factory.createyöntemi artık boş değer atanabilir genel türlere izin vermiyor. (I9b9f6)
Davranış Değişiklikleri
Lifecycle.repeatOnLifecycle:block, yürütme tekrarlandığında artık her zaman seri olarak çağrılıyor. (Ibab33)
Harici Katkı (External Contribution)
repeatOnLifecyclebelgelerindeki kod snippet'lerini düzelttiği için chao2zhang'a teşekkür ederiz. #205.
Sürüm 2.4.0-alpha02
16 Haziran 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 iptal edilir. 2.4.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
RepeatOnLifecycleWrongUsagelint denetimilifecycle-runtime-ktx'e eklendi. Bu denetim,repeateOnLifecycle'ninonStart()veyaonResume()içinde yanlış kullanıldığını algılar. (706078, b/187887400)
API Değişiklikleri
- Yapılandırılmış eşzamanlılığı destekleyen ve hakkında akıl yürütmesi daha kolay olan
Lifecycle.repeatOnLifecyclelehineLifecycleOwner.addRepeatingJobAPI'si kaldırıldı. (I4a3a8) - Diğer
androidx.startup.Initializer'lerin bunları bağımlılık olarak kullanabilmesi içinProcessLifecycleInitializer'ı herkese açık hale getirin. (I94c31)
Hata Düzeltmeleri
- Alan değiştiricilere sahip olduğunda
NullSafeMutableLiveDatalint kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616) - Jenerik türler kullanılırken
NullSafeMutableLiveDatalint kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)
Harici Katkı (External Contribution)
NullSafeMutableLiveDatalint kontrolünü iyileştirdiği için maxsav'a teşekkür ederiz. (#147, b/183696616)NullSafeMutableLiveDatalint kontrolünü iyileştirdiği için kozaxinan'a teşekkür ederiz. (#161, b/184830263)
Sürüm 2.4.0-alpha01
24 Mart 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.
Davranış Değişiklikleri
lifecycle-processartıkProcessLifecycleOwner'ı başlatmak içinandroidx.startupkullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializertarafından yapılıyordu.Geçmişte
tools:node="remove"işlem yaşam döngüsünü başlatmak içinContentProviderkullanmışsanız bunun yerine aşağıdakileri yapmanız gerekir.<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>(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API Değişiklikleri
Flow.flowWithLifecycleAPI'si, yaşam döngüsüLifecycle.repeatOnLifecycleAPI'si kullanılarak belirli bir durumda olduğunda yukarı akışlı Flow'dan değerler yayar. Bu, yeniLifecycleOwner.addRepeatinJobAPI'nin bir alternatifidir. (I0f4cd)
Hata Düzeltmeleri
- Lifecycle 2.3.1 sürümünden itibaren:
NonNullableMutableLiveDatalint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)
Lifecycle Viewmodel Compose Version 1.0.0
Sürüm 1.0.0-alpha07
16 Haziran 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.
API'de yapılan, geriye dönük uyumluluğu bozan değişiklikler
viewModel()artık isteğe bağlıViewModelStoreOwnerparametresini kabul ediyor. Bu sayede,LocalViewModelStoreOwnerdışındaki sahiplerle çalışmak daha kolay hale geliyor. Örneğin, artık belirli bir gezinme grafiğiyle ilişkili bir ViewModel'i almak içinviewModel(navBackStackEntry)kullanabilirsiniz. (I2628d, b/188693123)
Sürüm 1.0.0-alpha06
2 Haziran 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri içerir.
Compose'un 1.0.0-beta08 sürümüyle uyumlu olacak şekilde güncellendi.
Sürüm 1.0.0-alpha05
18 Mayıs 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
Yeni Özellikler
- Compose'un
1.0.0-beta07sürümüyle uyumlu olacak şekilde güncellendi.
Hata Düzeltmeleri
- ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumlu (I6f9de, b/184718994)
Sürüm 1.0.0-alpha04
7 Nisan 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
Bağımlılık Değişiklikleri
- Bu sürüm,
androidx.hilt:hilt-navigation-composeveandroidx.navigation:navigation-compose'ninandroidx.compose.compiler:compiler:1.0.0-beta04veandroidx.compose.runtime:runtime:1.0.0-beta04'deki bağımlılıkları senkronize etmesine olanak tanır. 1.0.0 sürümünde derleyici ve çalışma zamanının eşleşmesi gerekir.
Sürüm 1.0.0-alpha03
10 Mart 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
LocalViewModelStoreOwner.currentartık,ViewModelStoreOwneröğesinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için boş değer atanabilir birViewModelStoreOwnerdöndürüyor.ViewModelStoreOwnergerektiren API'ler (ör.viewModel()veNavHost)ViewModelStoreOwnerayarlanmamışsa yine de istisna oluşturur. (Idf39a)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha02
24 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
LocalViewModelStoreOwnerartıkasProvidableCompositionLocal()API'nin yerini alan veCompositionLocalProviderile kullanılabilenprovidesişlevlerine sahip. (I45d24)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha01
10 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
viewModel()composable'ı veLocalViewModelStoreOwner,androidx.lifecycle.viewmodel.composepaketindekiandroidx.compose.ui.viewinteropkonumundan bu yapıya taşındı. (I7a374)
Sürüm 2.3.1
Yaşam Döngüsü 2.3.1 Sürümü
24 Mart 2021
androidx.lifecycle:lifecycle-*:2.3.1 iptal edilir. 2.3.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveDataLint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)
Sürüm 2.3.0
Sürüm 2.3.0
10 Şubat 2021
androidx.lifecycle:lifecycle-*:2.3.0 iptal edilir. 2.3.0 sürümü şu commit'leri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
SavedStateHandleParcelable olmayan sınıflar için destek:SavedStateHandleartık belirli bir anahtar içinsetSavedStateProvider()'ı çağırmanıza izin vererek tembel serileştirmeyi destekliyor. Bu sayede,SavedStateHandledurumunu kaydetmesi istendiğindesaveState()'a geri arama yapacak birSavedStateProvidersağlıyor. Paketlenebilir olmayan sınıfları kaydetme başlıklı makaleyi inceleyin.- Yaşam Döngüsü Davranış Yaptırımı:
- LifecycleRegistry artık
DESTROYEDdurumunu son durum olarak zorunlu kılıyor. LifecycleRegistryartık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize ait olanLifecycleRegistrynesneleri içinLifecycleRegistry.createUnsafe(...)kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak buLifecycleRegistrynesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
- LifecycleRegistry artık
- Yaşam Döngüsü Durumu ve Etkinlik Yardımcıları:
downFrom(State),downTo(State),upFrom(State),upTo(State)statik yardımcı yöntemleri,Stateve geçiş yönü verildiğindeEventoluşturmak içinLifecycle.Event'ye eklendi. Lifecycle'ınEventişleminden hemen sonra geçiş yapacağıStatedeğerini sağlayangetTargetState()yöntemi eklendi. withStateAtLeast: Bir yaşam döngüsü durumu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan bir kod bloğunu çalıştıran, ardından sonuçla devam edenLifecycle.withStateAtLeastAPI'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermemeleri ve özel bir dağıtıcı kullanmamaları nedeniyle mevcutwhen*yöntemlerinden farklıdır. (aosp/1326081)ViewTreeAPI'ler: Yeni birViewTreeLifecycleOwner.get(View)veViewTreeViewModelStoreOwner.get(View)API'si, birViewörneği verildiğinde sırasıylaLifecycleOwnerveViewModelStoreOwneröğelerini almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity1.2.0, Fragment1.3.0ve AppCompat 1.3.0-alpha01 veya sonraki sürümlere yükseltmeniz gerekir.findViewTreeLifecycleOwnervefindViewTreeViewModelStoreOwnerKotlin uzantıları sırasıylalifecycle-runtime-ktxvelifecycle-viewmodel-ktx'de kullanılabilir.LiveData.observe()Kotlin uzantısı desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olanLiveData.observe()Kotlin uzantısı, Kotlin 1.4 kullanılırken gerekli olmadığı için artık desteklenmiyor.
Sürüm 2.3.0-rc01
16 Aralık 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
keys()SavedStateHandleyöntemi, durum kaydedilmeden önce ve sonra tutarlı hale geldi. Artıkset()vegetLiveData()ile kullanılan anahtarlara ek olarak daha öncesetSavedStateProvider()ile kullanılan anahtarları da içeriyor. (aosp/1517919, b/174713653)
Harici Katkı (External Contribution)
- Yaşam döngüsüne duyarlı eş yordamları askıya alma API'leri artık
yield()çağrılarını daha iyi işliyor. Thanks Nicklas Ansman Giertz! (aosp/1430830, b/168777346)
Sürüm 2.3.0-beta01
1 Ekim 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01 iptal edilir. 2.3.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Lambda söz dizimini kullanmak için gerekli olan
LiveData.observe()Kotlin uzantısı artık Kotlin 1.4'te gerekli olmadığından kullanımdan kaldırıldı. (I40d3f)
Hata Düzeltmeleri
- Kotlin 1.4'ü kullanmak için androidx'i yükseltin (Id6471, b/165307851, b/165300826)
Belgelerdeki Değişiklikler
liveDataoluşturucu veasLiveData()dokümanları, belirtilen zaman aşımı değerlerinin değiştirilmesiyle ilgili ayrıntıları içerecek şekilde güncellendi. (aosp/1122324)
Sürüm 2.3.0-alpha07
19 Ağustos 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 iptal edilir. 2.3.0-alpha07 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveDataLint kontrolündeki kilitlenme sorunu düzeltildi. (aosp/1395367)
Sürüm 2.3.0-alpha06
22 Temmuz 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 iptal edilir. 2.3.0-alpha06 sürümü şu commit'leri içerir.
Yeni Özellikler
Stateve geçiş yönü verildiğindeEventoluşturmak içinLifecycle.Event'edownFrom(State),downTo(State),upFrom(State),upTo(State)statik yardımcı yöntemleri eklendi. Lifecycle'ınEventişleminden hemen sonra geçiş yapacağıStatedeğerini sağlayangetTargetState()yöntemi eklendi. (I00887)- Yaşam döngüsü durumunu bekleyen ve durum değişikliği sırasında askıya alınmayan bir kod bloğunu eşzamanlı olarak çalıştıran, ardından sonuçla devam eden
Lifecycle.withStateAtLeastAPI'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermemeleri ve özel bir dağıtıcı kullanmamaları nedeniyle mevcutwhen*yöntemlerinden farklıdır. (aosp/1326081)
Davranış Değişiklikleri
- LifecycleRegistry artık
DESTROYEDdurumunu son durum olarak zorunlu kılıyor. (I00887) LifecycleRegistryartık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize aitLifecycleRegistrynesneleri içinLifecycleRegistry.createUnsafe(...)kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, buLifecycleRegistrynesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir (Ie7280, b/137392809).
Hata Düzeltmeleri
NullSafeMutableLiveDatauygulamasındaki kilitlenme sorunu düzeltildi. (b/159987480)ObsoleteLintCustomCheckile birlikte gelen hata analizi kontrolleri (özellikleNullSafeMutableLiveData) içinlifecycle-livedata-core-ktxdüzeltildi. (b/158699265)
Sürüm 2.3.0-alpha05
24 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 iptal edilir. 2.3.0-alpha05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LiveDataartık yeniden giriş yapılan durumları daha iyi işliyor veonActive()veyaonInactive()için yinelenen çağrıları önlüyor. (b/157840298)- Android Studio 4.1 Canary 6 veya sonraki sürümleri kullanılırken Lint kontrollerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)
Sürüm 2.3.0-alpha04
10 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveDataHata analizi kontrolündeki kilitlenme sorunu düzeltildi. (b/157294666)NonNullableMutableLiveDataLint kontrolü artık, boş olmayan tür parametresine sahip birMutableLiveDataüzerindenulldeğerinin ayarlandığı çok daha fazla durumu kapsıyor. (b/156002218)
Sürüm 2.3.0-alpha03
20 Mayıs 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 yayınlanır. 2.3.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
SavedStateHandleartık belirli bir anahtar içinsetSavedStateProvider()işlevini çağırmanıza olanak tanıyarak tembel serileştirmeyi destekliyor. Bu işlev,SavedStateHandledurumunu kaydetmesi istendiğindesaveState()işlevine geri çağırma işlemi yapacak birSavedStateProvidersağlıyor. (b/155106862)- Yeni
ViewTreeViewModelStoreOwner.get(View)API'si,Viewörneği verildiğinde kapsayanViewModelStoreOwneröğesini almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity1.2.0-alpha05, Fragment1.3.0-alpha05ve AppCompat1.3.0-alpha01'e yükseltme yapmanız gerekir.lifecycle-viewmodel-ktx'efindViewModelStoreOwner()Kotlin uzantısı eklendi. (aosp/1295522)
Hata Düzeltmeleri
MutableLiveDataLint kontrollerininlifecycle-livedata-core-ktxyapısıyla birlikte yayınlanmamasına neden olan sorun düzeltildi. Lifecycle2.3.0-alpha01'da yayınlanan lint kontrolleri (b/155323109)
Sürüm 2.3.0-alpha02
29 Nisan 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
SavedStateViewModelFactoryartık kolayca kullanılamayan veAndroidViewModeldesteğine ihtiyaç duyulmayan durumları daha iyi desteklemek için oluşturucusuna boşApplicationiletmenize olanak tanıyor. (aosp/1285740)
Hata Düzeltmeleri
- API düzeyi 28 ve daha düşük olan cihazlarda sınıf doğrulama hatasını önleyerek baştan başlatma performansını iyileştirir. (aosp/1282118)
Sürüm 2.3.0-alpha01
4 Mart 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Yeni
ViewTreeLifecycleOwner.get(View)API'si,Viewörneği verildiğinde kapsayanLifecycleOwneröğesini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Activity1.2.0-alpha01ve Fragment1.3.0-alpha01'a yükseltmeniz gerekir.findViewTreeLifecycleOwnerKotlin uzantısılifecycle-runtime-ktx'da kullanılabilir. (aosp/1182361, aosp/1182956) - Kotlin'de null olmayan olarak tanımlanmış bir
MutableLiveDataüzerindenulldeğeri ayarlarken sizi uyaran yeni bir Lint kontrolü eklendi. Bu özellik,livedata-core-ktxveyalivedata-ktxöğeleri kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092) lifecycle-runtime-testinguygulayan ve iş parçacığı açısından güvenli, değiştirilebilir birLifecyclesağlayan yeni birlifecycle-runtime-testingyapısı kullanıma sunuldu.TestLifecycleOwnerLifecycleOwner(aosp/1242438)
Hata düzeltmeleri
lifecycle-runtimeyapısının artık benzersiz bir paket adı var. (aosp/1187196)
Sürüm 2.2.0
ViewModel-Savedstate 2.2.0 sürümü
5 Şubat 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.
Lifecycle ViewModel SavedState artık diğer Lifecycle yapay ürünleriyle aynı sürümü paylaşıyor. 2.2.0 davranış biçimi, 1.0.0 davranış biçimiyle aynıdır.
Sürüm 2.2.0
22 Ocak 2020
androidx.lifecycle:lifecycle-*:2.2.0 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.
2.1.0 sürümünden beri yapılan önemli değişiklikler
- Yaşam Döngüsü Eşzamanlı Rutin Entegrasyonu: Yeni
lifecycle-runtime-ktxyapısı, Yaşam Döngüsü ile Kotlin eşzamanlı rutinleri arasında entegrasyon sağlar.lifecycle-livedata-ktx, eş yordamlardan yararlanmak için de genişletildi. Daha fazla bilgi için Kotlin coroutine'lerini Architecture Components ile kullanma başlıklı makaleye bakın. ViewModelProviders.of()desteği sonlandırıldı:ViewModelProviders.of()desteği sonlandırıldı. Fragment1.2.0kullanırken aynı işlevi elde etmek için yeniViewModelProvider(ViewModelStoreOwner)oluşturucusunaFragmentveyaFragmentActivityiletebilirsiniz.lifecycle-extensionsYapılandırma Desteğinin Sonlandırılması: Yukarıda belirtilenViewModelProviders.of()desteğinin sonlandırılmasıyla birlikte bu sürümdelifecycle-extensionsiçindeki son API'nin desteği sonlandırılıyor. Bu yapılandırma artık tamamen desteği sonlandırılmış olarak kabul edilmelidir.lifecycle-extensions'in gelecekte2.3.0sürümü olmayacağından,lifecycle-extensionsyerine ihtiyacınız olan belirli Yaşam Döngüsü yapılarına (ör.LifecycleServicekullanıyorsanızlifecycle-serviceveProcessLifecycleOwnerkullanıyorsanızlifecycle-process) bağlı kalmanızı önemle tavsiye ederiz.- Gradle Artımlı Ek Açıklama İşleyicisi: Lifecycle'ın ek açıklama işleyicisi varsayılan olarak artımlıdır.
Uygulamanız Java 8 programlama dilinde yazılmışsa
DefautLifecycleObserver, Java 7 programlama dilinde yazılmışsaLifecycleEventObserverkullanabilirsiniz.
Sürüm 2.2.0-rc03
4 Aralık 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 iptal edilir. 2.2.0-rc03 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Sahte bir
ViewModel,ViewModelStoreiçinde depolanıp daha sonra varsayılan fabrika ile sorgulandığında oluşan hata düzeltildi. launchWhenCreatedve benzer yöntemlerdekiDispatchers.Main.immediatekullanımını, ilgili yaşam döngüsü etkinliği sırasında eşzamanlı olarak çağrılacak şekilde düzeltin. (aosp/1156203)
Harici katkılar
- Düzeltmeye katkıda bulunan Anders Järleberg'e teşekkür ederiz. (aosp/1156203)
- Satır içi yürütme uygulamasını incelediği için Jetbrains'ten Vsevolod Tolstopyatov'a teşekkür ederiz.
Bağımlılık değişiklikleri
- Lifecycle Extensions artık Fragment
1.2.0-rc03'a bağlıdır.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 iptal edilir. 2.2.0-rc02 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Kitaplığın ProGuard kurulumunda, hedef API 29'dan düşükse API 28 ve sonraki sürümlerin yüklü olduğu cihazları etkileyen bir hata düzeltildi. (b/142778206)
Sürüm 2.2.0-rc01
23 Ekim 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 iptal edilir. 2.2.0-rc01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
launchWhenCreatedve ilgili yöntemlerin,Dispatchers.Main.immediateyerineDispatchers.Mainkullanması nedeniyle ilişkili yaşam döngüsü yönteminden bir kare sonra çalışmasına neden olan sorun düzeltildi. (aosp/1145596)
Harici katkılar
- Düzeltmeye katkıda bulunan Nicklas Ansman'a teşekkür ederiz. (aosp/1145596)
Sürüm 2.2.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 iptal edilir. 2.2.0-beta01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Lifecycle 2.2.0-alpha05'te
ProcessLifecycleOwnersıralamasında ve etkinliğin Android 10 cihazlarda başlatılmış ve devam ettirilmiş olarak taşınmasında ortaya çıkan gerileme düzeltildi.LifecycleOwner(aosp/1128132) - Lifecycle
2.2.0-alpha05'da kullanıma sunulan velifecycle-process'nin2.0.0veya2.1.0sürümü kullanılırkenNullPointerException'ye neden olan gerileme düzeltildi. (b/141536990)
Sürüm 2.2.0-alpha05
18 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 iptal edilir. 2.2.0-alpha05 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Coroutine livedata builder'daki yarış durumu düzeltildi. b/140249349
Sürüm 2.2.0-alpha04
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScopeveliveData'ın temel uygulaması artıkDispatchers.MainyerineDispatchers.Main.immediatekullanıyor. (b/139740492)
Harici katkılar
Dispatchers.Main.immediate'a taşınma konusunda katkıda bulunan Nicklas Ansman'a teşekkür ederiz. (aosp/1106073)
Sürüm 2.2.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
ViewModelStoreOwneruygulamaları artık isteğe bağlı olarakHasDefaultViewModelProviderFactoryuygulayarak varsayılan birViewModelProvider.Factorysağlayabilir. Bu, Etkinlik1.1.0-alpha02, Parça1.2.0-alpha02ve Gezinme2.2.0-alpha01için yapılmıştır. (aosp/1092370, b/135716331)
API değişiklikleri
ViewModelProviders.of()desteği sonlandırıldı. Aynı işlevselliği elde etmek için yeniViewModelProvider(ViewModelStoreOwner)oluşturucusunaFragmentveyaFragmentActivityiletebilirsiniz. (aosp/1009889)
Sürüm 2.2.0-alpha02
2 Temmuz 2019
androidx.lifecycle:*:2.2.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
API değişiklikleri
LiveDataScope.initialValueyerine,liveDatabloğunun mevcut yayınlanan değerini izleyecek olanLiveDataScope.latestValuekullanıldı.liveDataoluşturucusuna,timeoutparametresiniDurationtüründe alan yeni bir aşırı yükleme eklendi.
Sürüm 2.2.0-alpha01
7 Mayıs 2019
androidx.lifecycle:*:2.2.0-alpha01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Bu sürümde, Lifecycle ve LiveData için Kotlin eşyordamlarını destekleyen yeni özellikler eklenmiştir. Bunlarla ilgili ayrıntılı belgelere buradan ulaşabilirsiniz.
ViewModel-SavedState 1.0.0 sürümü
Sürüm 1.0.0
22 Ocak 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 iptal edilir. Version 1.0.0 contains these commits.
1.0.0 sürümündeki önemli özellikler
- Yeni SavedStateHandle sınıfı eklendi. Bu sayede
ViewModelsınıflarınız, kaydedilmiş duruma erişebilir ve bu duruma katkıda bulunabilir. Bu nesne,ViewModelsınıfının oluşturucusunda alınabilir ve Fragments ile AppCompatActivity tarafından varsayılan olarak sağlanan fabrikalar,SavedStateHandleöğesini otomatik olarak yerleştirir. - AbstractSavedStateViewModelFactory eklendi.
ViewModeliçin özel fabrikalar oluşturmanıza ve bu fabrikalaraSavedStateHandleerişimi vermenize olanak tanır.
ViewModel-Savedstate 1.0.0-rc03 sürümü
4 Aralık 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 iptal edilir. 1.0.0-rc03 sürümü şu commit'leri içerir.
Bağımlılık değişiklikleri
- Lifecycle ViewModel SavedState artık Lifecycle'a
2.2.0-rc03bağlıdır.
Viewmodel-Savedstate Sürüm 1.0.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.
Bağımlılık değişiklikleri
- Artık yaşam döngüsüne
2.2.0-rc02bağlıdır.
ViewModel-SavedState sürüm 1.0.0-rc01
23 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01, 1.0.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlanır. 1.0.0-rc01 sürümü şu commit'leri içerir.
ViewModel-Savedstate Version 1.0.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
Activity.onActivityResult()içinde bir SavedState ViewModel'e ilk kez erişmeninIllegalStateExceptionile sonuçlanmasına neden olan sorun düzeltildi. (b/139093676)AbstractSavedStateViewModelFactorykullanılırken yaşananIllegalStateExceptionsorunu düzeltildi. (b/141225984)
ViewModel-SavedState 1.0.0-alpha05 sürümü
18 Eylül 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
API değişiklikleri
SavedStateViewModelFactoryartık genişletilmiyorAbstractSavedStateViewModelFactoryveSavedStateHandleyalnızca bunu isteyen ViewModel'ler için oluşturuluyor (aosp/1113593)
ViewModel-SavedState Sürüm 1.0.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Zarar Veren Değişiklikler
lifecycle-viewmodel-savedstateartıkfragment'e bağlı değil ve ilgiliSavedStateViewModelFactory(Fragment)ileSavedStateViewModelFactory(FragmentActivity)oluşturucuları kaldırıldı. Bunun yerine, Activity1.1.0-alpha02, Fragment1.2.0-alpha02ve Navigation2.2.0-alpha01için varsayılan fabrika artıkSavedStateViewModelFactory. (b/135716331)
ViewModel-SavedState 1.0.0-alpha02 sürümü
2 Temmuz 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Varsayılan değeri kabul eden
SavedStateHandle.getLiveData()aşırı yüklemesi eklendi.
API Değişiklikleri
SavedStateVMFactory,SavedStateViewModelFactoryolarak yeniden adlandırıldı.AbstractSavedStateVMFactory,AbstractSavedStateViewModelFactoryolarak yeniden adlandırıldı.
ViewModel-Savedstate 1.0.0-alpha01 sürümü
13 Mart 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 iptal edilir. Bu ilk sürümün tam commit günlüğünü burada bulabilirsiniz.
Yeni özellikler
- Artık
ViewModels, savedstate'e katkıda bulunabilir. Bunu yapmak için yeni kullanıma sunulan ViewModel'in factorySavedStateVMFactoryözelliğini kullanırsınız ve ViewModel'iniz, parametre olarakSavedStateHandleobject alan bir oluşturucuya sahip olmalıdır.
Sürüm 2.1.0
2.0.0 sürümünden beri yapılan önemli değişiklikler
- Yaşam döngüsü etkinlikleri akışının gerektiği durumlar için
LifecycleEventObservereklendi. Gizli birGenericLifecycleObserversınıfı yerine herkese açık bir API'dir. LiveData.observeveTransformations.*yöntemleri için ktx uzantıları eklendi.- Kaynak
LiveDatadeğeri değişene kadar değer yayınlamayan yeni bir LiveData nesnesi oluşturanTransformations.distinctUntilChangedişlevi eklendi. ViewModel.viewModelScopeuzantı özelliği eklenerek ViewModel'lerde coroutine desteği eklendi.
Sürüm 2.1.0
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.1.0 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Sürüm 2.1.0-rc01
2 Temmuz 2019
androidx.lifecycle:*:2.1.0-rc01, androidx.lifecycle:*:2.1.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlanır. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.lifecycle:*:2.1.0-beta01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Yaşam döngüleri beta sürümüne yükseltildi: Önceki alfa sürümlerinde kullanıma sunulan API'ler (ör.
liveDatadönüştürme ve gözlem için uzantı işlevleri,ViewModelözellik temsilcisiyle başlatma) kararlı hale getirildi ve değiştirilmeyecek.
Sürüm 2.1.0-alpha04
3 Nisan 2019
androidx.lifecycle:*:2.1.0-alpha04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
API değişiklikleri
- Önemli değişiklik:
by viewModels()veby activityViewModels()işlevlerinin temelindeki API, yalnızcaViewModelStoreOwneryerine doğrudanViewModelStoredestekleyecek şekilde değiştirildi. (aosp/932932)
Sürüm 2.1.0-alpha03
13 Mart 2019
androidx.lifecycle:*:2.1.0-alpha03 iptal edilir. Bu sürüme dahil edilen tüm commit'lerin listesini burada bulabilirsiniz.
API değişiklikleri
ViewModelProvider.KeyedFactorykaldırıldı.ViewModelProvider.Factory'a ek olarak ikinci arayüz, Kotlin'deki mülk temsilciliğiby viewmodels {}gibi yeni özelliklerle iyi çalışmıyordu. (aosp/914133)
Sürüm 2.1.0-alpha02
30 Ocak 2019
androidx.lifecycle 2.1.0-alpha02 iptal edilir.
API değişiklikleri
LifecycleRegistryartık desteği sonlandırılansetState()yönteminin yerini alan birsetCurrentState()yöntemi içeriyor. (aosp/880715)
Hata düzeltmeleri
- Kapsayan
ViewModelStoretemizlendiğinde sahteViewModelörneklerinin kilitlenmesine neden olan sorun düzeltildi. b/122273087
Sürüm 2.1.0-alpha01
17 Aralık 2018
androidx.lifecycle 2.1.0-alpha01 iptal edilir.
Yeni özellikler
- Yaşam döngüsü etkinlikleri akışının gerektiği durumlar için
LifecycleEventObservereklendi. Gizli birGenericLifecycleObserversınıfı yerine herkese açık bir API'dir. LiveData.observeveTransformations.*yöntemleri için ktx uzantıları eklendi.Transformations.distinctUntilChangedyöntemi eklendi. Kaynak LiveData değeri değişene kadar değer yaymayan yeni birLiveDatanesnesi oluşturur.- ViewModel'lerde coroutine desteği:
ViewModel.viewModelScopeuzantı özelliği eklendi. ViewModelProvider.KeyedFactoryeklendi. Bu,createyöntemindekeyveClassalan ViewModels için bir fabrikadır.
Sürüm 2.0.0
Sürüm 2.0.0
21 Eylül 2018
Lifecycle 2.0.0, ViewModel'de 2.0.0-rc01 kaynaklı bir hata düzeltmesiyle yayınlandı.
Hata Düzeltmeleri
- Yapıcıları yanlışlıkla kaldıran bir ViewModel proguard kuralı düzeltildi. b/112230489
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- Yalnızca uygulamaları tutmak için LifecycleObserver proguard kuralı düzeltildi, alt arayüzler tutulmuyor b/71389427
- Karartma ve küçültmeye izin vermek için ViewModel proguard kuralları düzeltildi.
AndroidX öncesi sürümler
Aşağıdaki Lifecycle'ın AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:
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"
}
Sürüm 1.1.1
21 Mart 2018
Yalnızca küçük bir değişiklik yapıldı: android.arch.core.util.Function, arch:runtime konumundan arch:common konumuna taşındı. Bu sayede, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common'da) kullanılabilir.
lifecycle:common, lifecycle:runtime öğesinin bağımlısı olduğundan bu değişiklik, lifecycle:runtime öğesini doğrudan etkilemez. Yalnızca Paging'in yaptığı gibi doğrudan lifecycle:common öğesine bağlı olan modülleri etkiler.
Sürüm 1.1.0
22 Ocak 2018
Paketleme Değişiklikleri
Artık çok daha küçük yeni bağımlılıklar kullanılabilir:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
API Değişiklikleri
- Desteği sonlandırılan
LifecycleActivityveLifecycleFragmentartık kaldırıldı. LütfenFragmentActivity,AppCompatActivityveya destekFragmentkullanın. @NonNullek açıklaması,ViewModelProvidersveViewModelStoresöğelerine eklendiViewModelProvidersoluşturucusunun desteği sonlandırıldı. Lütfen statik yöntemlerini doğrudan kullanın.ViewModelProviders.DefaultFactorydesteği sonlandırıldı. LütfenViewModelProvider.AndroidViewModelFactorykullanın.ViewModelProvider.AndroidViewModelFactory.getInstance(Application)veAndroidViewModelörnekleri oluşturmaya uygun bir statikFactoryalmak için statikViewModelProvider.AndroidViewModelFactory.getInstance(Application)yöntemi eklendi.ViewModel