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.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
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.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
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 varsa 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-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ü şu commit'leri içerir.
API Değişiklikleri
removeViewModelStoreOnPopCallback()artıkViewModelStoreNavEntryDecoratorDefaultnesnesinin bir parçasıdır. 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öğesi çı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 bileşene sağlamak içinCompositionLocalProviderkullanı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ü şu 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
Doğrudan kullanıcı arayüzünde kapsamlı yaşam döngüleri oluşturmayı etkinleştirmek 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 birleştirilebilir öğeyi 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 kullanışlı 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)SavedStateHandlemarkaları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'yı 1.9.1 sürümüne güncelleyin (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). 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
- Yaşam döngüsü, yeni KMP hedeflerinin (Ic9e4f, b/397701294) desteklenmesi için 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ıca,onClearedveSavedStateHandledesteğinin yanı sırarecreate()aracılığıyla test sürecinin sonlandırılması ve yeniden oluşturulması da desteklenir.MutableStateFlowdöndürmek içinSavedStateHandle'egetMutableStateFlowekleyin. 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 Desktop 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, bu durumu burada açıklığa kavuşturuyoruz. Önerilen düzeltme: En son kararlı AGP'ye güncelleyin. Tamamen 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 çalışma zamanı 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
ViewModelProvider.getöğesine@MainThreadek açıklaması 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,lifecycle-viewmodel-composekonumundansavedstate-composekonumuna taşındı. (I4f690, b/378895074)
Harici Katkı (External Contribution)
- Kompozisyonda
Lifecycle::currentStateçağrılmasıyla ilgili yeni bir Lint sorunu ekler. Bunun yerine, 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çinViewModelProvider.Factoryile birlikteCreationExtras.createSavedStateHandlekullanı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ü 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 aşağıdaki 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) - Doküman
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ı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. (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'egetMutableStateFlowekleyin. 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 ve artıkLifecycleöğesini bu durumdan başka bir duruma taşımaya yönelik her girişimIllegalStateExceptionile sonuçlanı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 grubunda 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: Lifecycle Runtime Compose artık Compose Runtime1.7.1'a 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
ViewModelScenariosınıfı sağlayan yeni birandroidx.lifecycle:lifecycle-viewmodel-testingKMP 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 Desktop ve Android hedeflerinde kullanılabilir. (d3d0892)- Kotlin dilinin 2.0 sürümünde (I39df2) temel Application'ı 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ümleriyle (ör. R8 sürümü 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümleriyle (ö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 kümesinde (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ı
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 (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) ViewModelProviderYaş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ığındaViewModelProviderartık kilitlenmeyecek. Bu sayede LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltilecek.compileOnly(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 kullanırken 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'ı kullandığında ç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 belirtilenLifecycle.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 birlikte 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 gelir.LifecycleStartEffectveLifecycleResumeEffectAPI'lerini anahtarsız çağırmak, bu API'lerin yansıttığıDisposableEffectAPI'siyle aynı kurala tabi olarak artık bir hatadır.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)yerineLiveData.toPublisher(lifecycleOwner)kullanımdan kaldırıldı.lifecycle-livedata-core-ktxKotlin uzantıları artıklifecycle-livedata-coremodülüne taşındı.NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden 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 veyaviewModelFactoryKotlin DSL'nin kullanılması önerilir.
- Özel Fabrikaların
- JVM dışı platformlarda
ViewModelProvideröğesini özel bir fabrika olmadan kullanmakUnsupportedOperationExceptionile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde ViewModel'in bağımsız değişken içermeyen 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 istenmeyen 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 iş parçacığı 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. Bu nedenle koducommon'ye taşınıyor veandroidx.compose'nin çok platformlu desteğine uygun bir Android yapısı gönderiliyor. (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
NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden 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 veyaviewModelFactoryKotlin DSL'nin kullanılması önerilir.
- Özel Fabrikaların
- JVM dışı platformlarda
ViewModelProvideröğesini özel bir fabrika olmadan kullanmakUnsupportedOperationExceptionile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde ViewModel'in bağımsız değişken içermeyen 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ılacak. (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, bu API'lerin yansıttığıDisposableEffectAPI'siyle aynı kurala tabi olarak artık bir hatadır. (Ib0e0c, b/323518079)ViewModelartıkCloseableyerineAutoCloseablekullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)yerineLiveData.toPublisher(lifecycleOwner)kullanımdan kaldırıldı. (Iabe29, b/262623005)
Harici Katkı (External Contribution)
- Lifecycle'ı Kotlin Multiplatform'a taşımamıza 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, durum değişikliğinin ve tümLifecycleObservergeri çağırmalarının döndürülmeden önce 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 coroutine içinde güvenle kullanılabilir.mapveswitchMapuzantıları artıkdistinctUntilChangeddavranışı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ğerleri,LiveData'yi gözlemlemeye başladığınızda yalnızca bir kez 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ürü belirlenmiş 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 ile korunmuş kodların, kendi kullanım alanları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'yi yansıtı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.Statedeğeri 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ürü belirlenmiş 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 güncelleme 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ı rutin içindecurrentStatealanı kullanılırkenTestLifecycleOwneröğ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 bir çağrıda aynı
LiveData.switchMapörneğinin döndürülmesinin,LiveData.switchMapörneğinin kaynak olarak eklenmesini engellemesine neden olan sorun düzeltildi.LiveDataLiveData(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şzamanlılık rutini 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ı artık öncekiLiveDataiçin bir değer ayarlanmışsa döndürülenLiveDataöğesininvaluedeğerini ayarlayarak sonuçtaki LiveData'nın Jetpack Compose'da kullanıldığında ilk bileşimde doğru duruma sahip olmasını sağlıyor. (I91d2b, b/269479952)ViewModel,onCleared()için bir arama aldıysaaddCloseable()artıkCloseable'ı hemen kapatıyor.ViewModel(I4712e, b/280294730)
Hata Düzeltmeleri
- Yaşam döngüsü
2.6.2: Durum geri yüklendiyse,save()üst öğede durumu kaydetmeden ç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.SavedStateRegistryBu,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şlem,value'ün mevcutLifecycle.Stateolduğu birStateFlowdöndürür. (Ib212d, b/209684871)Lifecycle.EventartıkLifecycle.asFlow().ileFlowolarak gözlemlenebiliyor (If2c0f, b/176311030)LifecycleResumeEffectAPI'si, hemLifecycle.Event.ON_RESUMEhem deLifecycle.Event.ON_PAUSEetkinlik geri çağırmalarına dayalı olarak ComposeSideEffect'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. KaynaktanLiveDatagelen güncellenmiş değerler, yalnızcadistinctUntilChanged()kaynağından döndürülenLiveDatagözlemlenmeye başlandığında uygulanır. (Ib482f)LifecycleObserverile ilişkili proguard keep kuralları kaldırıldı. Bu nedenle, yansıtma yoluyla API'leri kullanmak isteyen ProGuard ile korunmuş kodların, kendi özel kullanım alanları 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()'ınStateFlowveFlowüzerinde, akışlardan veri toplayan ve yaşam döngüsüne duyarlı bir şekilde en son değerini 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 belgeye bakın. - Kotlin'e Dönüştürme: Ç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 verilmiştir.
| 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()'nın boş değer atanabilir bir türü kabul etmesini istiyorsanızObserver'yi boş 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. KaynaktanLiveDatagelen güncellenmiş değerler, yalnızcadistinctUntilChanged()kaynağından döndürülenLiveDatagözlemlenmeye başlandığında 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'de 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'de 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 bir söz dizimi 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ıldı ve KotlinFunction1alan sürümlerle değiştirildi. 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 uyumlu olmaya devam eder. (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 uyumlu olmaya devam eder. (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ış kodlar 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. Bir bağımlılık yükseltildiğinde diğer bağımlılıklar otomatik olarak yükseltiliyor. 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öğesinin 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şturucusuLifecycle2.4+ ile kullanılı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 artık sırasıylaApplicationveyaSavedStateHandle'ye erişmek içinAndroidViewModelFactoryveyaAbstractSavedStateViewModelFactory'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 Activity veya Fragment 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,CreationExtrasbirincil veri kaynağı olarak kullanılarak özel fabrikanızın desteklediği her birViewModelsınıfı için bir tane olmak üzere bir veya daha fazla lambda başlatıcı açısındanViewModelProvider.Factorytanımlamanıza olanak tanır.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,SavedStateHandleile desteklenenrememberSaveablebenzeri davranışlara olanak tanıyan yeni deneysel API'ler içeriyor.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
Closeablearayüzünü 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,
ViewModelile aynı kullanım ömrüne sahip olacak şekildeviewModelScopeoluşturucunuzda 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,Lifecycleöğesine gözlemci eklenip eklenmediğine bakılmaksızın her zamanIllegalStateExceptionhatası verilir.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 ile 2.5 ve sonraki sürümler 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
MediatorLiveData.addSource()artıknullkaynağını gözlemcilere yaymak yerinenullkaynağı geçirildiğindeNullPointerExceptionhatası veriyor.(Ibd0fb, b/123085232)
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
MutableStateaşırı yüklemesinirememberSaveableile eşitlik sağlamak içinSavedStateHandle.saveable'e deneysel olarak 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 çalışma gerektirmedenViewModeltemizlendiğ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 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,Lifecycleöğesine gözlemci eklenip eklenmediğine bakılmaksızın her zamanIllegalStateExceptionhatası verilir. (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 null yapılabilirliğ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@CheckResultile açıklama eklenerek bu işlevler çağrıldığında sonucun kullanılmasını zorunlu kı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.1:ProcessLifecycleInitializer'ı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ı gerekenBundlebağımsız değişkenlerine erişim 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, ComponentActivity veya Fragment içinde getDefaultViewModelCreationExtras() geçersiz kılınarak sağlanabilir. Böylece, özel ViewModelProvider.Factory'nize yerleşik bir destekli ekleme biçimi olarak sunulur. Bu ekstralar, doğrudan ViewModelProvider ile kullanıldığında veya by viewModels() ve by activityViewModels() Kotlin özellik uzantıları kullanıldığında özel Factory'niz için otomatik olarak kullanılabilir hale gelir. (I79f2b, b/207012584, b/207012585, b/207012490)
Hata Düzeltmeleri
SavedStateHandleöğesine sağlanan varsayılan değerin, işlem sonlandırılıp yeniden oluşturulduktan sonraSavedStateHandleöğesinden özel olarak kaldırılmış olsa bile yeniden görünmesi sorunu 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 bir 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, geriye dönük uyumsuzluğa neden olan değişiklik:
ViewModelProvider, Kotlin'de yeniden yazıldı.ViewModelProvider.Factory.createyöntemi artık boş değer atanabilir genel değerlere izin vermiyor.
- Kaynakta yapılan, geriye dönük uyumsuzluğa neden olan 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. Yaşam döngüsü hedef durumun içine ve dışına çıktıkça engelleme iptal edilip yeniden başlatılır.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-ktx'daki 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'den 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-ktxkitaplığındaki 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 öğelere 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)
repeatOnLifecycledokümanlarındaki 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ü bu commit'leri içerir.
Yeni Özellikler
RepeatOnLifecycleWrongUsagelint denetimilifecycle-runtime-ktx'e eklendi. Bu denetim,repeateOnLifecycleöğesininonStart()veyaonResume()içinde yanlış kullanıldığını algılar. (706078, b/187887400)
API Değişiklikleri
- Yapılandırılmış eşzamanlılığa saygı duyan 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'yı 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 kullanılarak yaşam döngüsü en azından belirli bir durumda olduğunda yukarı akışlı Flow'dan değerler yayan birLifecycle.repeatOnLifecycleAPI'si eklendi. Bu, yeniLifecycleOwner.addRepeatinJobAPI'nin bir alternatifidir. (I0f4cd)
Hata Düzeltmeleri
- Yaşam Döngüsü 2.3.1'den 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ıkViewModelStoreOwnerdeğerinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürüyor.ViewModelStoreOwnerViewModelStoreOwnergerektiren 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 1.0.0-alpha01 sürümü
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.viewinteropöğesinden bu yapıya taşındı. (I7a374)
Sürüm 2.3.1
Yaşam Döngüsü Sürüm 2.3.1
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
- Paketlenebilir olmayan sınıflar için
SavedStateHandledesteği:SavedStateHandleartık belirli bir anahtar içinsetSavedStateProvider()'ı çağırmanıza izin vererek tembel serileştirmeyi destekliyor. Bu sayede,SavedStateHandledurumunu kaydetmesi istendiğindesaveState()'a geri çağırma işlemi yapacak birSavedStateProvidersağlanı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ı:
Stateve geçiş yönü verildiğindeEventoluşturmak içinLifecycle.Event'yedownFrom(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. 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ıylaLifecycleOwnerveViewModelStoreOwneriçerenleri 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ının desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olanLiveData.observe()Kotlin uzantısının desteği, Kotlin 1.4 kullanılırken gerekli olmadığı için sonlandırıldı.
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. Nicklas Ansman Giertz'e teşekkür ederiz. (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ı, verilen 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ünde 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
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. (I00887)- Bir yaşam döngüsü durumunu bekleyen, durum değişikliği sırasında askıya alınmayan bir kod bloğunu eşzamanlı olarak çalıştıran ve 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ğeri ayarlanmış olan ç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'yefindViewModelStoreOwner()Kotlin uzantısı eklendi. (aosp/1295522)
Hata Düzeltmeleri
MutableLiveDataLint kontrollerinin, Lifecycle2.3.0-alpha01'da yayınlanmasına velifecycle-livedata-core-ktxyapısıyla birlikte yayınlanmasına neden olan sorun düzeltildi. (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-ktxyapıtları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092) lifecycle-runtime-testinguygulayan ve iş parçacığı açısından güvenli değiştirilebilirLifecyclesağlayan birTestLifecycleOwnersağlayan yeni birlifecycle-runtime-testingyapısı kullanıma sunuldu.LifecycleOwner(aosp/1242438)
Hata düzeltmeleri
lifecycle-runtimeyapay nesnesi artık benzersiz bir paket adına sahip. (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şrutin Entegrasyonu: Yeni
lifecycle-runtime-ktxyapısı, Yaşam Döngüsü ile Kotlin eşrutinleri arasında entegrasyon sağlar.lifecycle-livedata-ktx, eş yordamlardan yararlanmak için de genişletildi. Daha fazla bilgi için Kotlin eşyordamlarını mimari bileşenlerle kullanma başlıklı makaleye bakın. ViewModelProviders.of()desteğinin sonlandırılması: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 Deprecation'ı: Yukarıda belirtilenViewModelProviders.of()deprecation'ı ile bu sürüm,lifecycle-extensionsiçindeki son API'nin deprecation'ını işaret ediyor. Bu yapılandırma artık tamamen onaylanmamış 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-service,ProcessLifecycleOwnerkullanı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
ViewModeltaklidiViewModelStoreiçinde depolanıp daha sonra varsayılan fabrika ile sorgulandığında oluşan hata düzeltildi.Dispatchers.Main.immediatekullanımını, ilgili yaşam döngüsü etkinliği sırasında eşzamanlı olarak çağrılacak şekildelaunchWhenCreatedve benzer yöntemlerde 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ümleri çalıştıran 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 regresyon düzeltildi.LifecycleOwner(aosp/1128132) lifecycle-process'nın2.0.0veya2.1.0sürümü kullanılırkenNullPointerException'ye neden olan, Lifecycle2.2.0-alpha05'da ortaya çıkan 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. 1.0.0 sürümü şu commit'leri içerir.
1.0.0 sürümündeki önemli özellikler
- Yeni SavedStateHandle sınıfı eklendi. Bu izin,
ViewModelsınıflarınızın kaydedilmiş duruma erişmesine ve bu duruma katkıda bulunmasına olanak tanır. 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
2.2.0-rc03'a bağlı.
Viewmodel-Savedstate Version 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 Version 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 1.0.0-beta01 sürümü
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 Version 1.0.0-alpha05
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 Version 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'inizSavedStateHandleobject parametresini 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.distinctUntilChangedeklendi. 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, doğrudanViewModelStore'yi destekleyecek şekilde değiştirildi. Artık yalnızcaViewModelStoreOwnerdesteklenmiyor. (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'de 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 ViewModel'ler için bir fabrikadır.
Sürüm 2.0.0
Sürüm 2.0.0
21 Eylül 2018
ViewModel'de 2.0.0-rc01 tarafından bir hata düzeltmesiyle Lifecycle 2.0.0 yayınlandı.
Hata Düzeltmeleri
- Yapıcıları yanlışlıkla kaldıran 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 içinde) 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 gibi doğrudan lifecycle:common öğesine bağlı olan modüller etkilenir.
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)yöntemi,ViewModelveAndroidViewModelörnekleri oluşturmaya uygun statikFactorydeğerini almak için eklenmiştir.