Yaşam döngüsü
Bu tabloda androidx.lifecycle
grubundaki tüm yapılar listelenmektedir.
Yapı | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
yaşam döngüsü-* | 2,8,4 | - | - | 2.9.0-alfa01 |
yaşam döngüsü-görünüm-modeli-oluşturma | 2,8,4 | - | - | 2.9.0-alfa01 |
Bağımlılıkları bildirme
Yaşam döngüsüne bir bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.
build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin.
uygulamanız veya modülünüz:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.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" // 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.8.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") // 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.8.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.8.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 bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Sürüm 2.8
Sürüm 2.8.4
24 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.4
yayınlandı. Sürüm 2.8.4 bu taahhütleri içerir.
Hata Düzeltmeleri
LiveData.asFlow()
artık, döndürülen AkışınLiveData
üzerinde ayarlanmış bir değeri aldıktan hemen sonra tamamlandığı durumları (örneğin,take(1)
kullanırken) doğru şekilde işliyor. (I9c566)Lifecycle*Effect
tamamlanma durumu artık belirleyicidir (ör.onStopOrDispose
, Yaşam Döngüsü durdurulduğu için çağrıldıysa Yaşam Döngüsü tekrarSTARTED
değerine dönmediği sürece, kullanımdan kaldırıldıktan sonra ikinci kez çağrılmaz). (I5f607, b/352364595)
Sürüm 2.8.3
1 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.3
yayınlandı. Sürüm 2.8.3 bu taahhütleri içerir.
Hata Düzeltmeleri
- Kod küçültme kullanılırken Yaşam Döngüsü 2.8'in Compose 1.6.0 ve önceki sürümleriyle 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
yayınlandı. Sürüm 2.8.2 bu taahhütleri içerir.
Hata Düzeltmeleri
- Yaşam Döngüsü 2.8.X'i Compose 1.6.X veya önceki sürümlerle kullanırken
CompositionLocal LocalLifecycleOwner not present
hataları düzeltildi. Artık Yaşam Döngüsü 2.8.2'yi herhangi bir geçici çözüm olmadan Compose'un herhangi bir sürümüyle kullanabilirsiniz. (aosp/3105647, b/336842920) compileOnly
yaş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ığındaViewModelProvider
artık kilitlenmeyecek ve LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltilecek. (I80383, b/341792251)
Sürüm 2.8.1
29 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.1
yayınlandı. Sürüm 2.8.1 bu taahhütleri içerir.
Hata Düzeltmeleri
lifecycle-viewmodel-compose
, artık yalnızcacompose-runtime
öğesine ortak bir bağımlılığa sahip. Bu dacompose-ui
bağımlılığını ortadan kaldırıyor. Android yapısı, uyumluluk içincompose-ui
özelliğini korur. (aosp/3079334, b/339562627)ViewModel
ürününün, mülk yetkilerini kullanansaveable
entegrasyonunda artık sınıf adı, otomatik oluşturulan anahtarın bir parçası olarak kullanılıyor. Böylece, birden fazla sınıf aynıSavedStateHandle
öğesini kullanıyorsa çakışmalar önleniyor. (aosp/3063463)
Sürüm 2.8.0
14 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0
yayınlandı. Sürüm 2.8.0 bu kaydetmeleri içerir.
2.7.0'dan bu yana önemli değişiklikler
LocalLifecycleOwner
, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzündenlifecycle-runtime-compose
uygulamasına taşındı.lifecycle-runtime-compose
yapısı artıkLifecycleOwner
belirtilenLifecycle.State
değerinin altına düştükten sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanızı sağlayandropUnlessResumed
vedropUnlessStarted
API'lerini içeriyor. Örneğin bu, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Yazmada Gezinme özelliği ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametredir. Kendi görev dağıtıcınızı veSupervisorJob()
öğesini eklemenize veyarunTest
içinde kullanılabilenbackgroundScope
öğesini kullanarak varsayılanı geçersiz kılmanıza olanak tanır. (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 ile yeniden yazıldı ve artıkCloseable
yerineAutoClosable
kullanıyor. ArtıkgetCloseable()
aracılığıyla alınmasını sağlayankey
ileAutoCloseable
nesne eklemeyi destekliyor.LifecycleStartEffect
veLifecycleResumeEffect
işlemlerinin anahtar olmadan çağrılması durumunda, bu API'lerin yansıttığıDisposableEffect
API'siyle aynı kural uygulanarak artık bir hata gerçekleştirilir.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
kullanımdan kaldırıldı ve yerineLiveData.toPublisher(lifecycleOwner)
.lifecycle-livedata-core-ktx
kotlin uzantısı artıklifecycle-livedata-core
modülüne taşındı.NullSafeMutableLiveData
, birçok yanlış pozitif sonucu önlemek için yeniden düzenlendi.
Yaşam Döngüsü Kotlin Çoklu Platform Uyumluluğu
Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
ve LifecycleRegistry
alanlarındaki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor.
Etkilenen yapılar:
lifecycle-common
, çoğu API'yicommon
ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.lifecycle-runtime
, çoğu API'yicommon
ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.- Tüm API'ler
lifecycle-runtime
hedefine taşındığı içinlifecycle-runtime-ktx
şu anda boş. lifecycle-runtime-compose
, tüm API'lericommon
hedefine taşır veandroidx.compose
adlı çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.
ViewModel Kotlin Çoklu Platform Uyumluluğu
lifecycle-viewmodel
yapısı ile ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda sunulmaktadır.
Bu değişikliğe uyum sağlamak için, ViewModelProvider
uygulamasında java.lang.Class<T>
alan gibi yöntemlerde artık kotlin.reflect.KClass<T>
alan eşdeğer bir yöntem bulunmaktadır.
Android'de ikili program uyumluluğu korunmuştur, ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırılırken dikkate değer birkaç değişiklik söz konusudur:
ViewModelProvider
örneği oluşturma işlemi, doğrudan oluşturucusunu çağırmak yerine artıkViewModelProvider.create()
yöntemleriyle gerçekleştiriliyor.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel fabrikaların
ViewModelProvider.Factory
tarihinden itibaren,CreationExtras
veyaviewModelFactory
Kotlin DSL'sini gerektirencreate
yöntemini kullanması önerilir.
- Özel fabrikaların
ViewModelProvider
, JVM dışı platformlarda özel bir fabrika olmadan kullanılırsaUnsupportedOperationException
elde edilir. JVM platformlarında, özel bir fabrika sağlanmazsa bağımsız değişkensiz ViewModel oluşturucu kullanılarak uyumluluk korunur.viewModelScope
,Dispatchers.Main
özelliğinin kullanılamadığı platformlardaEmptyCoroutineContext
yedeklenir (ör. Linux) seçin.
Etkilenen yapılar:
lifecycle-viewmodel
, çoğu API'yicommon
ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.- Tüm API'ler
lifecycle-viewmodel
hedefine taşındığı içinlifecycle-viewmodel-ktx
şu anda boş. lifecycle-viewmodel-compose
, tüm API'lericommon
hedefine taşır veandroidx.compose
adlı çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.
Davranış Değişiklikleri
- Aynı
clazz: KClass<VM : ViewModel>
öğesine sahip birinitializer
zaten eklenmişseInitializerViewModelFactory
(viewModelFactory
oluşturucu işlevi dahil) artıkIllegalArgumentException
atacak. (Ic3a36)
Bilinen Sorunlar
lifecycle-*:2.8.0
için en az 1.7.0-alpha05 (b/336842920) Compose sürümü gerekir.
Sürüm 2.8.0-rc01
1 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
yayınlandı. Sürüm 2.8.0-rc01 bu kayıtları içerir.
Hata Düzeltmeleri
lifecycle-common
sınıfları için Temel Profil'in düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artıklifecycle-runtime
AAR'de yer almaktadır. (aosp/3038274, b/322382422)- ViewModel'e eklenmiş
AutoCloseable
örneklerinin temizlenme şekliyle ilgili istenmeyen sıralama değişikliği düzeltildi. Önceki sıra:addCloseable(String, AutoCloseable)
, ardındanaddClosable(AutoCloseable)
, ardındanonCleared()
geri yüklendi. (aosp/3041632) - Yerel ve JVM Masaüstü ortamlarına yönelik
viewModelScope
için varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)
Harici Katkı
- Victor Kropp, JVM Desktop'taki ana iş parçacığının kontrolünü iyileştirdiği için teşekkürler. (aosp/3037116)
Sürüm 2.8.0-beta01
17 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
yayınlandı. Sürüm 2.8.0-beta01 bu kayıtları içerir.
Yeni Özellikler
lifecycle-runtime-compose
yapısı artık Kotlin Multiplatform ile uyumlu. Koducommon
platformuna taşıyor veandroidx.compose
için sunulan çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor. (If7a71, I4f4a0, b/331769623)
Sürüm 2.8.0-alpha04
3 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
yayınlandı. Sürüm 2.8.0-alpha04 bu kaydetmeleri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
yapısı artık Kotlin Multiplatform ile uyumlu. Koducommon
platformuna taşıyor veandroidx.compose
adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor. Bu değişikliğe uyum sağlamak amacıyla, OluşturulabilirviewModel
yöntemi artıkjava.lang.Class
ek olarakKClass
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-compose
yapısı artık Compose 1.6.0'a bağımlı.- Yaşam döngüsü artık Profil Yükleyici 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
yayınlandı. Sürüm 2.8.0-alpha03 bu kaydetmeleri içerir.
Yeni Özellikler
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametredir. Kendi görev dağıtıcınızı veSupervisorJob()
öğesini eklemenize veyarunTest
içinde kullanılabilenbackgroundScope
öğesini kullanarak varsayılanı geçersiz kılmanıza olanak tanır. (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 Çoklu Platform Uyumluluğu
lifecycle-viewmodel
yapısı ile ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda sunulmaktadır. (b/214568825)
Bu değişikliğe uyum sağlamak için, ViewModelProvider
uygulamasında java.lang.Class<T>
alan gibi yöntemlerde artık kotlin.reflect.KClass<T>
alan eşdeğer bir yöntem bulunmaktadır.
Android'de ikili program uyumluluğu korunmuştur, ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırılırken dikkate değer birkaç değişiklik söz konusudur:
ViewModelProvider
örneği oluşturma işlemi, doğrudan oluşturucusunu çağırmak yerine artıkViewModelProvider.create()
yöntemleriyle gerçekleştiriliyor.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel fabrikaların
ViewModelProvider.Factory
tarihinden itibaren,CreationExtras
veyaviewModelFactory
Kotlin DSL'sini gerektirencreate
yöntemini kullanması önerilir.
- Özel fabrikaların
ViewModelProvider
, JVM dışı platformlarda özel bir fabrika olmadan kullanılırsaUnsupportedOperationException
elde edilir. JVM platformlarında, özel bir fabrika sağlanmazsa bağımsız değişkensiz ViewModel oluşturucu kullanılarak uyumluluk korunur.viewModelScope
,Dispatchers.Main
özelliğinin kullanılamadığı platformlardaEmptyCoroutineContext
yedeklenir (ör. Linux) seçin.
Davranış Değişiklikleri
- Aynı
clazz: KClass<VM : ViewModel>
öğesine sahip birinitializer
zaten eklenmişseInitializerViewModelFactory
(viewModelFactory
oluşturucu işlevi dahil) artıkIllegalArgumentException
gönderir. (Ic3a36)
Hata Düzeltmeleri
ViewModel.getCloseable
artık kopya anahtarları işliyor:key
ile ilişkilendirilmiş birAutoCloseable
kaynağı zaten varsa eski kaynak hemen değiştirilecek ve kapatılacak. (Ibeb67)- Bir
ViewModel
öğesininviewModelScope
öğesine erişim artık ileti dizisi açısından güvenli. (If4766, b/322407038)
Harici Katkı
LocalLifecycleOwner
, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzünden yaşam döngüsü çalışma zamanı oluşturma moduna taşındı. Katkı için Jake Wharton'a teşekkür ediyoruz. (I6c41b, b/328263448)
Sürüm 2.8.0-alpha02
21 Şubat 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
yayınlandı. 2.8.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
LifecycleOwner
belirtilenLifecycle.State
değerinin altına düştükten sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanızı sağlayandropUnlessResumed
vedropUnlessStarted
API'leri eklendi. Örneğin bu, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Gezinme Oluşturma Yazma ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin Dönüşümleri
ViewModel
artık Kotlin dilinde (I16f26, b/214568825) yazılmıştırlifecycle-viewmodel-ktx
kotlin uzantısı artık temel yaşam döngüsü modülüne taşındı. (Id787b, b/274800183)lifecycle-runtime-ktx
kotlin uzantısı artık temel yaşam döngüsü modülüne taşındı. (Ic3686, b/274800183)lifecycle-livedata-core-ktx
kotlin uzantısı artık temel yaşam döngüsü modülüne taşındı. (I54a3d, b/274800183)
Kotlin Çoklu Platform Uyumluluğu
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
veLifecycleRegistry
alanlarındaki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor. (b/317249252)
API Değişiklikleri
- Bu API'lerin yansıttığı
DisposableEffect
API'siyle aynı kural uygulanarakLifecycleStartEffect
veLifecycleResumeEffect
anahtarlarının anahtar olmadan çağrılması artık bir hata olarak görülecektir. (Ib0e0c, b/323518079) ViewModel
artıkCloseable
yerineAutoCloseable
kullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
kullanımdan kaldırıldı ve yerineLiveData.toPublisher(lifecycleOwner)
. (Iabe29, b/262623005)
Harici Katkı
- Yaşam Döngüsü'nü Kotlin Multiplatform'a taşımaya yardımcı olduğu için Jetbrains'den Ivan Matkov'a teşekkür ediyoruz. (aosp/2926690, I0c5ac, If445d)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
yayınlandı. 2.8.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
ViewModel
artıkgetCloseable()
üzerinden alınmasına izin veren birkey
ileCloseable
nesne eklemeyi destekliyor. (I3cf63)
Sürüm 2.7
Sürüm 2.7.0
10 Ocak 2024
androidx.lifecycle:lifecycle-*:2.7.0
yayınlandı. 2.7.0 sürümü bu kaydetmeleri içerir.
2.6.0'dan bu yana önemli değişiklikler
TestLifecycleOwner
artık durum değişikliğini ve tümLifecycleObserver
geri çağırmalarının geri dönmeden önce tamamlanmasını sağlayan bir askıya alma işlevisetCurrentState()
içeriyor. ÖzelliklecurrentState
özelliğini doğrudan ayarlamanın aksine bu özellikrunBlocking
kullanmaz. Bu sayederunTest
tarafından sağlanan koordinatlar gibi bir koordinat içinde kullanılması güvenlidir.map
veswitchMap
LiveData
uzantıları artıkdistinctUntilChanged
davranışını yansıtmaktadır.LiveData
,value
kümesine sahipsemap
/switchMap
işlevi, döndürülenLiveData
öğesininvalue
öğesini doldurmak için hemen çağrılır. Bu, başlangıç değerinin ilk bestenin bir parçası olarak ayarlanmasını sağlar (observeAsState()
ile kullanıldığında) ancak gözlem davranışını değiştirmez.LiveData
kaynağındaki güncelleme değerleri, yalnızcaLiveData
öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder.- Bu sürümde, işlem ölümü ve yeniden oluşturulmasından sonra
SavedStateHandle
ürününün özelParcelable
sınıflarını düzgün şekilde geri yüklememesine neden olan bir sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parseller dizisi için ek çalışma (doğru türde manuel olarak bir tür dizi oluşturmak) gerekir. Ayrıcaget
,getLiveData
vegetStateFlow
ile ilgili dokümanlarda artık bu sınırlama özel olarak ortadan kalkmaktadır. LifecycleObserver
ile ilişkili ProGuard saklama kuralları kaldırıldı. Diğer bir deyişle, API'leri yansıma yoluyla kullanmak isteyen (ör. desteği uzun süredir sonlandırılan@OnLifecycleEvent
ek açıklamasının kullanıldığı) korumalı kod, kendi kullanım alanları için kendi Keep kurallarını sağlamalıdır.
Yaşam Döngüsü Olay Gözlemlenebilirliği
LifecycleEventObserver
kullanmaya alternatif olarak, artıkLifecycle.asFlow()
uzantı yöntemiyleLifecycle.Event
Flow
öğesini gözlemleyebilirsiniz.- Jetpack Compose kullanıcıları artık
Lifecycle.Event
tabanlı Compose yan efektlerini çalıştırmak içinLifecycleEventEffect
kullanabilir.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose kullanıcıları, sırasıyla durdurulmuş ve duraklatılmış olarak devam ettirilen çift etkinlikleri işlemek için
LifecycleStartEffect
veLifecycleResumeEffect
öğelerini kullanabilir. Bu API,DisposableEffect
ürününde bulunan API'yi yansıtır ve durum yükselirken yapılan değişikliğin, eski haline dönerken 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ü olaylarında kod çalıştırma bölümüne bakın.
Yaşam Döngüsü Durumu Gözlemlenebilirliği
- Mevcut
Lifecycle.State
, artıkLifecycle.currentStateFlow
mülkü aracılığıyla gözlemlenebilir. Bu işlem,value
değerinin geçerliLifecycle.State
olduğu birStateFlow
döndürür. - Jetpack Compose kullanıcıları,
Lifecycle.State
öğesini doğrudan ComposeState
olarak göstermek içinLifecycle.currentStateAsState()
uzantısını kullanabilir. Bu,lifecycle.currentStateFlow.collectAsState()
ile eşdeğerdir (ve daha kısa bir alternatiftir).
Daha fazla bilgi için Akışlarla yaşam döngüsü durumunu toplama bölümüne bakın.
Sürüm 2.7.0-rc02
13 Aralık 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
yayınlandı. 2.7.0-rc02 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- İşlem ölümü ve yeniden oluşturma işleminden sonra
SavedStateHandle
ürününün özelParcelable
sı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 Parseller dizisi için ek çalışma (doğru türde manuel olarak bir tür dizi oluşturmak) gerekir. Ayrıcaget
,getLiveData
vegetStateFlow
ile ilgili dokümanlarda artık bu sınırlama özel olarak ortadan kalkmaktadır. (I0b55a)
Sürüm 2.7.0-rc01
15 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
yayınlandı. 2.7.0-rc01 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
LifecycleOwner
değiştirilirseLifecycleStartEffect
veLifecycleResumeEffect
artık efekt bloğunu doğru şekilde ortadan 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
hiçbir değişiklik yapılmadan yayınlandı. Sürüm 2.7.0-beta01 bu kaydetmeleri içerir.
- Beta sürümü yükseltilmiş bir sürüm. Bu sürümde büyük bir değişiklik yapılmamıştır.
Sürüm 2.7.0-alpha03
18 Ekim 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
yayınlandı. 2.7.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
lifecycle-runtime-testing
artık bir eş yordam içindecurrentState
alanını kullanarakTestLifecycleOwner
öğesininLifecycle.State
değerinin ayarlanmasını önlemek için yeni bir Lint kontrolü içeriyor. Lint kontrolü artık askıya alınansetCurrentState
işlemini öneriyor. Bu,Lifecycle.State
öğesinin engelleme yapılmadan ayarlanmasına olanak tanır. (Icf728, b/297880630)
Hata Düzeltmeleri
- Aynı
LiveData
örneğinin hem ilk çağrıda hem de sonraki bir çağrıda döndürülmesi,LiveData
örneğinin kaynak olarak eklenmesini engellemesine neden olanLiveData.switchMap
sorunu düzeltildi. (Ibedcba7)
Sürüm 2.7.0-alpha02
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
yayınlandı. 2.7.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
TestLifecycleOwner
, kullanıcılararunTest
tarafından sağlanana benzer bir eş yordam içindenTestLifecycleOwner
kullanma seçeneği sunmak için artıksetCurrentState()
askıya alma işlevini içeriyor. (I329de, b/259344129)
API Değişiklikleri
lifecycle-livedata-ktx
modüllerindeki tüm dosyalar analifecycle-livedata
modülüne taşındı. (I10c6f, b/274800183)
Davranış Değişiklikleri
LiveData.map()
veLiveData.switchMap()
uzantıları, artık öncekiLiveData
için ayarlanmış bir değer varsa döndürülenLiveData
öğesininvalue
öğesini ayarlıyor. Böylece, sonuç olarak elde edilen LiveData'nın Jetpack Compose'da kullanılması ilk bestede doğru duruma sahip oluyor. (I91d2b, b/269479952)ViewModel
adlı kullanıcınınaddCloseable()
cihazı artıkViewModel
onCleared()
için çağrı almışsaCloseable
hemen kapanıyor. (I4712e, b/280294730)
Hata Düzeltmeleri
- Yaşam döngüsü
2.6.2
ile ilgili: Durumun geri yüklenmesi halindeSavedStateHandle
ürününün doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi.save()
, durumu üst öğede (SavedStateRegistry
) kaydedilmeden çağrıldı ve ardından durum tekrar geri yüklendi. Bu işlem,rememberSaveable
ile Gezinme Oluşturma Aracı'ndakiNavHost
arasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.7.0-alpha01
26 Temmuz 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
yayınlandı. 2.7.0-alpha01 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
Lifecycle.State
artıkLifecycle.currentStateFlow
aracılığıyla gözlemlenebilir. Bu işlem,value
öğesinin geçerliLifecycle.State
olduğu birStateFlow
döndürür. (Ib212d, b/209684871)Lifecycle.Event
artıkLifecycle.asFlow().
ileFlow
olarak gözlemlenebilir (If2c0f, b/176311030)- Hem
Lifecycle.Event.ON_RESUME
hem deLifecycle.Event.ON_PAUSE
etkinlik geri çağırmalarına göre ComposeSideEffect
'ları çalıştırmak içinLifecycleResumeEffect
API eklendi. (I60386, b/235529345) Lifecycle.Event.ON_START
veLifecycle.Event.ON_STOP
etkinlik geri çağırmalarına dayalı ComposeSideEffect
'ları çalıştırmak içinLifecycleStartEffect
API eklendi. (I5a8d1, b/235529345)Lifecycle.Event
tabanlı ComposeSideEffect
öğelerini çalıştırmak içinLifecycleEventEffect
API eklendi. (Ic9794, b/235529345)Lifecycle.State
ürününün doğrudan ComposeState
olarak gösterilmesi içinLifecycle.collectAsState()
uzantısı 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ı artık, öncekiLiveData
üzerinde bir değer ayarlanmışsa döndürülenLiveData
öğesininvalue
değerini ayarlıyor. Bu durum gözlem davranışını değiştirmez.LiveData
kaynağından güncellenen değerler yalnızcadistinctUntilChanged()
öğesinden döndürülenLiveData
öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)LifecycleObserver
ile ilişkili ProGuard saklama kuralları kaldırıldı. Diğer bir deyişle, API'leri yansıtma yoluyla kullanmak isteyen korumalı kodun, belirli kullanım alanları için kendi Keep 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
yayınlandı. 2.6.2 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Durum geri yüklendiyse işlem ölümünden sonra
SavedStateHandle
öğesinin doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi.save()
, üstSavedStateRegistry
içindeki durum gerçekten kaydedilmeden çağrıldı ve ardından durum tekrar geri yüklendi. Bu işlem,rememberSaveable
ile Gezinme Oluşturma Aracı'ndakiNavHost
arasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.6.1
22 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.1
yayınlandı. Sürüm 2.6.1 bu kaydetmeleri içerir.
Bağımlılık Güncellemeleri
lifecycle-viewmodel-savedstate
artık SavedState1.2.1
metriğine bağlı. (cd7251)- Yaşam döngüsü artık ProfileLoader
1.3.0
'a bağlıdır. (f9d30b)
Sürüm 2.6.0
8 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.0
yayınlandı. 2.6.0 sürümü bu kaydetmeleri içerir.
2.5.0'dan bu yana önemli değişiklikler
LiveData
artıkLiveData
üzerinde hiç açık bir değerin ayarlanıp ayarlanmadığını gösteren yeni birisInitialized
özelliği içeriyor. Bu özellik, hiç değer belirlenmemiş veya açık birnull
değeri olmadığı içinliveData.value
,null
döndüren bir değer arasında ayrım yapabilmenizi sağlıyor.MediatorLiveData
artık başlangıç değeri ayarlamak için bir kurucu içeriyor.- Akışlardan toplanan ve akışlardan toplanan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Oluşturma Durumu olarak temsil eden
collectAsStateWithLifecycle()
StateFlow
veFlow
için yeni bir uzantı eklendi. - Duraklatma sevk görevlisinin kullanılması bazı durumlarda kaynakların israfına neden olabileceği için
Lifecycle.launchWhenX
yöntemleri veLifecycle.whenX
yöntemleri kullanımdan kaldırıldı.Lifecycle.repeatOnLifecycle
kullanılması önerilir. İşin bir defaya mahsus olarak askıya alınması hakkında daha fazla bilgi edinmek için, bunun neden yapay olarak güvenli olmadığıyla ilgili bu açıklamayı inceleyin. - Kotlin Dönüşümü: Çok sayıda Yaşam Döngüsü 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 program uyumluluğunu korur. Şu sınıflarda, Kotlin'de yazılmış sınıflar için kaynakla uyumsuz değişiklikler var:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
Aşağıdaki tabloda, yaşam döngüsünün yeni sürümü için kaynak dönüşümler sağlanmaktadır.
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
içinonChanged
yönteminin boş değeri, artık genel türün null değeriyle eşleşiyor.Observer.onChanged()
öğesinin null değer içeren bir türü kabul etmesini istiyorsanızObserver
öğesini null değer içeren bir türle örneklendirmeniz gerekir. - Şu sınıflar da Kotlin'e dönüştürüldü, ancak kaynakla uyumlu kaldı:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
veProcessLifecycleOwner
Sürüm 2.6.0-rc01
22 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
yayınlandı. 2.6.0-rc01 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
LiveData.distinctUntilChanged()
uzantısı artık, öncekiLiveData
üzerinde bir değer ayarlanmışsa döndürülenLiveData
öğesininvalue
değerini ayarlıyor. Bu durum gözlem davranışını değiştirmez.LiveData
kaynağından güncellenen değerler yalnızcadistinctUntilChanged()
öğesinden döndürülenLiveData
öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)
Sürüm 2.6.0-beta01
8 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
yayınlandı. Sürüm 2.6.0-beta01 bu kaydetmeleri içerir.
Kotlin Dönüşümleri
LifecycleOwner
artık Kotlin dilinde yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Söz konusu değişiklik, artık öncekigetLifecycle()
işlevini uygulamak yerinelifecycle
özelliğini geçersiz kılabilir. (I75b4b, b/240298691)ViewModelStoreOwner
artık Kotlin'de. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Söz konusu değişiklik, artık öncekigetViewModelStore()
işlevini uygulamak yerineviewModelStore
özelliğini geçersiz kılabilir. (I86409, b/240298691)LifecycleOwner
üzerindekilifecycleScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
öğesindekilifecycle-common
yapıya taşındı. (I41d78, b/240298691)Lifecycle
üzerindekicoroutineScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
öğesindekilifecycle-common
yapıya taşındı. (Iabb91, b/240298691)
Sürüm 2.6.0-alpha05
25 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
yayınlandı. 2.6.0-alpha05 sürümü bu kaydetmeleri içerir.
Kotlin Dönüşümleri
Transformations
artık Kotlin dilinde yazılmış. Bu,Transformations.map
gibi doğrudan söz dizimini kullanan Kotlin'de yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Artık Kotlin kodu, daha önce yalnızcalifecycle-livedata-ktx
kullanılırken kullanılabilen Kotlin uzantı yöntemi söz dizimini kullanmalıdır. Java programlama dili kullanılırken bu yöntemlerinandroidx.arch.core.util.Function
yöntemi alan sürümleri kullanımdan kaldırılır ve KotlinFunction1
alan sürümleriyle değiştirilir. Bu değişiklik, ikili program uyumluluğunu korur. (I8e14f)ViewTreeViewModelStoreOwner
artık Kotlin dilinde yazılmış. Bu değişiklik, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Daha önce ayarlanmış bir sahibi belirleyip bulmak için artıkandroidx.lifecycle.setViewTreeViewModelStoreOwner
veandroidx.lifecycle.findViewTreeViewModelStoreOwner
View
paketinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, ikili programlarla uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynakla uyumlu olmaya devam eder. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
arayüzü artık Kotlin dilinde yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. İlgili önceki işlevleri uygulamak yerine artıkdefaultViewModelProviderFactory
vedefaultViewModelCreationExtras
özelliklerini geçersiz kılması gerekir. (Iaed9c, b/240298691)Observer
artık Kotlin dilinde yazılmış. CihazınonChanged()
yöntemi, parametresi için artıkvalue
adını kullanıyor. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
veProcessLifecycleOwner
artık Kotlin dilinde (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691) yazılıyor
Sürüm 2.6.0-alpha04
11 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
yayınlandı. 2.6.0-alpha04 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
LiveData
artıkLiveData
üzerinde hiç açık bir değerin ayarlanıp ayarlanmadığını gösteren yeni birisInitialized
özelliği içeriyor. Bu özellik, hiç değer belirlenmemiş veya açık birnull
değeri olmadığı içinliveData.value
,null
döndüren bir değer arasında ayrım yapabilmenizi sağlıyor. (Ibd018)
API Değişiklikleri
lifecycle-runtime-compose
collectAsStateWithLifecycle()
API'leri artık deneysel durumda değil. (I09d42, b/258835424)- Duraklatma sevk görevlisinin kullanılması bazı durumlarda kaynakların israfına neden olabileceği için
Lifecycle.launchWhenX
yöntemleri veLifecycle.whenX
yöntemleri kullanımdan kaldırıldı.Lifecycle.repeatOnLifecycle
kullanılması önerilir. (Iafc54, b/248302832)
Kotlin Dönüşümleri
ViewTreeLifecycleOwner
artık Kotlin dilinde yazılmış. Bu değişiklik, Kotlin ile yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Daha önce ayarlanmış bir sahibi belirleyip bulmak için artıkandroidx.lifecycle.setViewTreeLifecycleOwner
veandroidx.lifecycle.findViewTreeLifecycleOwner
View
paketinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu,lifecycle-runtime-ktx
sürümündeki önceki Kotlin uzantısının yerini alır. Bu, ikili programlarla uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynakla uyumlu olmaya devam eder. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
artık Kotlin dilinde yazılmış. Daha öncelifecycle-reactivestreams-ktx
sürümünde bulunan Kotlin uzantıları,lifecycle-reactivestreams
modülüne taşındı ve Kotlin'de yazılan kodların birincil yüzeyi haline geldi. Bu değişiklik, Kotlin uzantı yöntemi API'lerini halihazırda kullanmıyorsanız Kotlin'de yazılan kod için kaynakla uyumlu olmayan bir değişikliktir. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
veViewModelStore
artık Kotlin dilinde (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a24) I59a23
Hata Düzeltmeleri
get()
yanlış sınıfla arandığındaSavedStateHandle
,ClassCastException
ile kilitlenme sorunu yaşamıyor türü. (I6ae7c)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
yayınlandı. 2.6.0-alpha03 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Farklı Yaşam Döngüsü modüllerinin amaçlandığı şekilde çalışmayan modülleriyle ilgili sorun düzeltildi. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
tarafından gönderilen hatalar artık, geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha yararlı 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
yayınlandı. 2.6.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
MediatorLiveData
artık başlangıç değeri ayarlamak için bir kurucu içeriyor. (Ib6cc5, b/151244085)
Hata Düzeltmeleri
Lifecycle
yapıları artık, birbirine bağlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlamalar içeriyor. Böylece, biri yükseltildiğinde diğer bağımlılıklar da otomatik olarak yükseltiliyor. b/242871265FlowLiveData.asFlow()
, aşağıdakilerin sağlandığından emin olmak için artık kendiChannel
uygulamasını kullanmak yerine bircallbackFlow
oluşturuyor: ileti dizisi güvenliği ve bağlam koruması. (I4a8b2, b/200596935)FlowLiveData
işlevininasLiveData
işlevi, artıkStateFlow
oluştururken başlangıç değerini koruyacak yeniLiveData
nesnesini tanımlar. (I3f530, b/157380488)- Yaşam döngüsü
2.5.1
'ten:AndroidViewModelFactory
özel uygulamaları, durum bilgili oluşturucuyuLifecycle
2.4+ (I5b315, b/238011621) ile kullanırken artıkcreate(modelClass)
işlevini doğru şekilde çağırıyor.
Sürüm 2.6.0-alpha01
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
yayınlandı. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Akışlardan toplanan ve en son değerini, yaşam döngüsüne duyarlı bir şekilde Oluşturma Durumu olarak temsil eden ve
StateFlow
veFlow
collectAsStateWithLifecycle
uzantısına yeni bir uzantı eklendi. Yaşam döngüsü en azından belirli birLifecycle.State
içinde olduğunda akış toplanır ve yeni emisyon, Eyaletin değerine ayarlanır. Yaşam döngüsü buLifecycle.State
değerinin altına düştüğünde akış toplama işlemi durur ve Eyalet 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
yayınlandı. Sürüm 2.5.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
AndroidViewModelFactory
özel uygulamaları,Lifecycle
2.4+ ile durum bilgiliAndroidViewModelFactory
oluşturucusu kullanıldığında 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
yayınlandı. 2.5.0 sürümü bu kaydetmeleri içerir.
2.4.0'dan bu yana önemli değişiklikler
SavedStateHandle
,LiveData
kullanımına alternatif olarak değer değişikliklerini izlemek için KotlinStateFlow
değeri döndüren birgetStateFlow()
API'si sunuyor.ViewModel CreationExtras - Özel
ViewModelProvider.Factory
yazarken, sırasıylaApplication
veyaSavedStateHandle
erişimi elde etmek içinAndroidViewModelFactory
veyaAbstractSavedStateViewModelFactory
süresini uzatmak gerekmiyor. Bunun yerine, bu alanlar yenicreate
aşırı yüklemesi ile herViewModelProvider.Factory
alt sınıfınaCreationExtras
olarak sağlanır:create(Class<T>, CreationExtras)
. Bu ekstralar, sırasıyla1.5.0
Etkinliği ve Parça1.5.0
kullanılırken Etkinliğiniz veya Parçanız tarafından otomatik olarak sağlanır.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
lifecycle-viewmodel
artık,ViewModelProvider.Factory
cihazınızı bir veya daha fazla lambda başlatıcıyla tanımlamanıza olanak tanıyan birviewModelFactory
Kotlin DSL sunuyor. Bu, özel fabrikanızın desteklediği herViewModel
sınıfı için bir adet ve birincil veri kaynağı olarakCreationExtras
kullanıyor.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
lifecycle-viewmodel-compose
artık özel birViewModelProvider.Factory
oluşturulmasına gerek kalmadanViewModel
örneği oluşturmak için lambda fabrikası kullanan birviewModel()
API'si 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 Tasarrufu Entegrasyonu -
lifecycle-viewmodel-compose
yapı artıkSavedStateHandle.saveable
içinderememberSaveable
benzer davranışa izin veren yeni deneysel API'ler içeriyor: "ViewSavedStateHandle
class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
onCleared()
üzerinde herhangi bir manuel çalışma gerektirmedenViewModel
temizlendiğinde kapatılacakViewModel
öğesine bir veya daha fazlaCloseable
nesnesi eklemenize olanak tanıyanaddCloseable()
API'si ve yeni oluşturucu aşırı yüklemesi eklendi.Örneğin, ViewModel'e ekleyebileceğiniz ancak test yoluyla kontrol edebileceğiniz eş zamanlı bir kapsam oluşturmak için
Closeable
uygulayan birCoroutineScope
oluşturabilirsiniz:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
Daha sonra,
viewModelScope
ile aynı kullanım ömrünü korurkenViewModel
oluş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
,INITIALIZED
konumundanDESTROYED
konumuna taşınmaya çalışıldığında artık her zamanIllegalStateException
hatası verilir. ,Lifecycle
öğesine ekli bir gözlemcinin olup olmadığıyla ilgili verileri sunar.LifecycleRegistry
,DESTROYED
durumuna ulaştığında gözlemcilerini temizler.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
yayınlandı. 2.5.0-rc02 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- ComposeOnly Yaşam Döngüsü bağımlılarının önceki sürümleri 2.5 ve üzeri sürümlerle karıştırılırken
ViewModelProvider
artık kilitlenmez. (I81a66, b/230454566)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
yayınlandı. Sürüm 2.5.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
MediatorLiveData.addSource()
,null
kaynağını gözlemcilere yaymak yerine artık birnull
kaynağı ilettiğindeNullPointerException
gönderiyor.(Ibd0fb, b/123085232)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
yayınlandı. Sürüm 2.5.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
SavedStateHandle
içinde kalıcı durum için anahtar olarak özellik adlarını kullanmak üzereSavedStateHandle.saveable
mülk yetkileri eklendi (I8bb86, b/225014345)
Hata Düzeltmeleri
- Birincil olmayan alt gezinme sekmesinde bir
NavHost
öğesinin başka birNavHost
içine yerleştirilmesinin, birden çok arka grup kullanıldığındaIllegalStateException
ile sonuçlanması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
yayınlandı. Sürüm 2.5.0-alpha06 bu kaydetmeleri içerir.
Yeni Özellikler
- Şu süre için
SavedStateHandle.saveable
öğesine deneyselMutableState
aşırı yüklemesi ekleyin:rememberSaveable
ile parite (I38cfe, b/224565154)
API Değişiklikleri
CreationExtras
artık mühürlü değil, soyut. (Ib8a7a)
Hata Düzeltmeleri
SavedStateHandleController
nedeniyle oluşanIllegalStateException: Already attached to lifecycleOwner
hatası düzeltildi. (I7ea47, b/215406268)
Sürüm 2.5.0-alpha05
23 Mart 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
yayınlandı. 2.5.0-alpha05 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
modülü artıkSavedStateHandle
içindeki değerlerinrememberSaveable
tarafından kullanılan kayıtlı örnek durumuyla doğru şekilde entegre edilmesini sağlayan deneysel bir API olanSavedStateHandleSaver
özelliğini sunuyor. (Ia88b7, b/195689777)
API Değişiklikleri
- Java'daki Yaşam Döngüsü 2.3 ve daha yeni Yaşam Döngüsü sürümleriyle ilgili bir uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)
Hata Düzeltmeleri
SavedStateViewFactory
,SavedStateRegistryOwner
ile başlatıldığında bile artıkCreationExtras
kullanımını destekliyor. Ekstra özellikler 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
yayınlandı. 2.5.0-alpha04 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
SavedStateHandle
artık değer değişikliklerini izlemek için KotlinStateFlow
değeri döndüren birgetStateFlow()
API'siLiveData
kullanmaya bir alternatif. (Iad3ab, b/178037961)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
yayınlandı. Sürüm 2.5.0-alpha03 bu kaydetmeleri içerir.
Yeni Özellikler
addCloseable()
API ve yeni yüklemenize bir veya daha fazla kod eklemenizi sağlayanViewModel
öğesine kullanılacakCloseable
nesneViewModel
gerektirmeden temizlendiğinde kapanıronCleared()
kapsamındaki tüm manuel işler. (I55ea0)lifecycle-viewmodel
artık bir İşleme için lambda eklemenize olanak tanıyanInitializerViewModelFactory
belirliViewModel
sınıfları (birincil veri olarakCreationExtras
kullanılıyor) kaynak. (If58fc, b/216687549)lifecycle-viewmodel-compose
artık şu özelliklere sahip birviewModel()
API'si sunuyor: bir lambda fabrikası kullanarak birViewModel
örneği oluşturur. özel birViewModelProvider.Factory
oluşturulmasını gerektirir. (I97fbb, b/216688927)
API Değişiklikleri
- Artık şunun için
CreationExtras
ile birViewModel
oluşturabilirsiniz:lifecycle-viewmodel-compose
. (I08887, b/216688927)
Davranış değişiklikleri
Lifecycle.State
,INITIALIZED
konumundan şu konuma taşınmaya çalışılıyor:DESTROYED
artık ne olursa olsun her zamanIllegalStateException
atacak ,Lifecycle
öğesine ekli bir gözlemcinin olup olmadığıyla ilgili verileri sunar. (I7c390, b/177924329)LifecycleRegistry
, şu işlemleri yaptığında artık gözlemcilerini temizleyecek:DESTROYED
durumuna ulaşmak. (I4f8dd, b/142925860)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
yayınlandı. 2.5.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
SavedStateHandle
veSavedStateViewModelFactory
, Kotlin'e dönüştürüldü. Bu durum, her iki sınıftaki jeneriklerin nulllanabilirliğini iyileştirdi. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
işlevi parametresi, artık null yapılabilir bir çıktıya sahip. (I40396, b/132923666)LiveData
-ktx uzantılarında artık@CheckResult
bu çağrılar sırasında sonucun kullanılmasını zorunlu kılmak için işlevlerine dahildir. (Ia0f05, b/207325134)
Davranış değişiklikleri
SavedStateHandle
, aşağıdaki durumlarda defaultValue değerini düzgün şekilde depolar: belirtilen anahtar için değer yok. (I1c6ce, b/178510877)
Hata Düzeltmeleri
- Yaşam Döngüsü
2.4.1
için:ProcessLifecycleInitializer
,StartupException
tetiklemesini engelleyen düzeltmelerin varsayılan olarak kullanılabilir olmasını sağlamak içinlifecycle-process
, Başlangıç 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724) - Özel
AndroidViewModel
sınıfları için artık daha iyi bir hata mesajı sunuluyor parametrelerini yanlış sıraya sokup birViewModel
oluşturmayı deneyin. (I340f7, b/177667711) - Artık bir uygulama ayarlamadan
AndroidViewModelFactory
kullanarakCreationExtras
aracılığıyla bir 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
yayınlandı. Sürüm 2.5.0-alpha01 bu kaydetmeleri içerir.
ViewModel CreationExtras
Bu sürümle, ViewModel
yapısının yeniden yapılandırılması için zemin hazırlıyoruz. Her biri ilave işlevler ekleyen (AndroidViewModelFactory
üzerinden Application
oluşturucu parametresine izin veren, SavedStateViewModelFactory
ve AbstractSavedStateViewModelFactory
aracılığıyla SavedStateHandle
oluşturucu parametresine izin veren) ViewModelProvider.Factory
ürününün katı bir alt sınıf grubu yerine, yeni bir kavram olan CreationExtras
'u temel alan durum bilgisiz fabrikalar dünyasına geçiş yapıyoruz. (Ia7343, b/188691010, b/188541057)
Bu değişiklikle birlikte, ViewModelProvider
artık önceki create(Class<T>)
yöntemine (ViewModelProvider.Factory
) doğrudan arama yapmayacak. Bunun yerine, yeni bir create
aşırı yüklemesi çağrılıyor: create(Class<T>, CreationExtras)
. Yani, ViewModelProvider.Factory
örneğinin doğrudan uygulanması artık şu yeni CreationExtras
öğelerinin her birine erişebilir:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: BuString
,ViewModelProvider.get()
hizmetine aktardığınız özel anahtara erişim sağlar.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
,Application
sı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
,SavedStateHandle
oluşturmak için kullanılması gerekenBundle
bağımsız değişkene erişim sağlar.
Bu ekstra özellikler 1.5.0-alpha01
Etkinliği, 1.5.0-alpha01
Parçası ve Gezinme 2.5.0-alpha01
kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların önceki bir sürümünü kullanırsanız CreationExtras
boş olur. Mevcut ViewModelProvider.Factory
alt sınıflarının tümü, hem bu kitaplıkların önceki sürümleri tarafından kullanılan eski oluşturma yolunu hem de bundan sonra kullanılacak CreationExtras
yolunu destekleyecek şekilde yeniden yazılmıştır.
Bu CreationExtras
, Fabrika alt sınıflarının katı bir hiyerarşisine bağlı kalmadan her bir ViewModel
öğesine yalnızca ihtiyacınız olan bilgileri 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 gereken bir ViewModel için bir SavedStateHandle
oluşturmak amacıyla CreationExtras
üzerinde SavedStateHandleSupport
tarihli createSavedStateHandle()
Kotlin uzantı işlevini kullanırız. (Ia6654, b/188541057)
Özel CreationExtras
, ComponentActivity
veya Fragment
içinde getDefaultViewModelCreationExtras()
geçersiz kılınarak sağlanabilir ve böylece özel ViewModelProvider.Factory
için yerleşik bir destekli ekleme biçiminde kullanılabilir. Bu ekstra özellikler, doğrudan ViewModelProvider
ile veya by viewModels()
ve by activityViewModels()
Kotlin özellik uzantıları kullanılırken özel Fabrikanızda otomatik olarak kullanıma sunulur. (I79f2b, b/207012584, b/207012585, b/207012490)
Hata Düzeltmeleri
- Varsayılan değerin sağlanmasıyla ilgili bir sorun düzeltildi
işlemden sonra
SavedStateHandle
yeniden görünür hatta bu durum, ölüm ve eğlence amaçlı olduğununSavedStateHandle
grubundan kaldırıldı. Sonuç olarak bu,SavedStateHandle
artık varsayılanları birleştirmeyecek değerleri ve geri yüklenen değerleri birlikte kullanmak yerine, geri yüklenen değerleri doğru kaynak olarak görmelidir. (I53a4b)
Sürüm 2.4
Sürüm 2.4.1
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.4.1
yayınlandı. Sürüm 2.4.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Yaşam Döngüsü
2.5.0-alpha01
'ndan geri bağlanmış: Varsayılan değerin sağlanmasıyla ilgili bir sorun düzeltildiSavedStateHandle
etiketi, işlemden sonra tekrar hatta bu durum, ölüm ve eğlence amaçlı olduğununSavedStateHandle
grubundan kaldırıldı. Sonuç olarak bu,SavedStateHandle
artık varsayılanları birleştirmeyecek değerleri ve geri yüklenen değerleri birlikte kullanmak yerine, geri yüklenen değerleri doğru kaynak olarak görmelidir. (I53a4b) lifecycle-process
artıkProcessLifecycleInitializer
kullanımınınStartupException
değerine neden olacağı durumlarda regresyonu düzelten Androidx Startup 1.1.1 sürümüne bağımlı. (b/216490724)
Sürüm 2.4.0
27 Ekim 2021
androidx.lifecycle:lifecycle-*:2.4.0
yayınlandı. 2.4.0 sürümü bu kaydetmeleri içerir.
2.3.0'dan bu yana önemli değişiklikler
@OnLifecycleEvent
desteği sonlandırıldı. Bunların yerineLifecycleEventObserver
veyaDefaultLifecycleObserver
kullanılmalıdır.androidx.lifecycle:lifecycle-viewmodel-compose
kitaplığı eklendi.viewModel()
composable veLocalViewModelStoreOwner
sunar.- Kaynak yıkıcı değişiklik:
ViewModelProvider
, Kotlin dilinde yeniden yazıldı.ViewModelProvider.Factory.create
yöntemi artık null değer geneline izin vermiyor.
- Kaynak yıkıcı değişiklik:
androidx.lifecycle:lifecycle-runtime-ktx
uygulamasına yeni eş yordam API'si eklendi:Lifecycle.repeatOnLifecycle
, yaşam döngüsü en azından belirli bir durumda olduğunda eş yordamdaki bir kod bloğunu yürüten API'dir. Yaşam döngüsü hedef duruma girip çıktıkça engelleme iptal edilir ve yeniden başlatılır.Flow.flowWithLifecycle
, yaşam döngüsü en azından belirli bir durumda olduğunda yukarı akıştan değerler yayan API.DefaultLifecycleObserver
,lifecycle.lifecycle-common-java8
kuruluş birimindenlifecycle.lifecycle-common
kuruluş birimine taşındı.lifecycle.lifecycle-common-java8
artıklifecycle.lifecycle-common
ek işlev sunmadığı için bu işleve duyulan bağımlılıklifecycle.lifecycle-common
ile değiştirilebilir.lifecycle-viewmodel-ktx
eklentisindeki eş yordam olmayan API,lifecycle-viewmodel
modülüne taşındı.lifecycle-process
,ProcessLifecycleOwner
uygulamasını başlatmak için artıkandroidx.startup
kullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.İlk kullanıma hazırlamak için kullanılan
ContentProvider
tools:node="remove"
kullandıysanız yoksa aşağıdaki işlemleri gerçekleştirmeniz 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
, Yaşam Döngüsü 2.4.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 2.4.0-rc01 bu kaydetmeleri içerir.
Sürüm 2.4.0-beta01
15 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
yayınlandı. Sürüm 2.4.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
@OnLifecycleEvent
desteği sonlandırıldı.LifecycleEventObserver
veya Onun yerineDefaultLifecycleObserver
kullanılmalıdır. (I5a8fa)- DefaultLifecycleObserver
androidx.lifecycle.lifecycle-common-java8
konumundan şuna taşındı:androidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
artıkandroidx.lifecycle.lifecycle-common
dışında ek işlev sunmadığından bu işleve duyulan bağımlılıkandroidx.lifecycle.lifecycle-common
ile değiştirilebilir. (I021aa) lifecycle-viewmodel-ktx
eklentisindeki eş yordam olmayan API,lifecycle-viewmodel
modülü. (I6d5b2)
Harici Katkı
Sürüm 2.4.0-alpha03
4 Ağustos 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
yayınlandı. 2.4.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Kaynağı bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı.
ViewModelProvider.Factory.create
yöntemi artık null değere izin vermiyor genel. (I9b9f6)
Davranış Değişiklikleri
Lifecycle.repeatOnLifecycle
:block
, yürütme tekrarlanırken artık her zaman seri olarak çağrılıyor. (Ibab33)
Harici Katkı
repeatOnLifecycle
dokümanlarındaki kod snippet'lerini düzelttiğiniz için chao2zhang ile teşekkür ederiz. #205.
Sürüm 2.4.0-alpha02
16 Haziran 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
yayınlandı. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
lifecycle-runtime-ktx
için,onStart()
veyaonResume()
içinderepeateOnLifecycle
öğesinin hatalı şekilde kullanıldığını algılayan yeni birRepeatOnLifecycleWrongUsage
hata analizi denetimi eklendi. (706078, b/187887400)
API Değişiklikleri
LifecycleOwner.addRepeatingJob
API'si şurada kaldırıldı: yapısala saygı gösterenLifecycle.repeatOnLifecycle
daha kolay akıl yürütebiliyor. (I4a3a8)- Diğer
androidx.startup.Initializer
öğelerinin bunları bağımlılık olarak kullanabilmesi içinProcessLifecycleInitializer
öğesini herkese açık hale getirin. (I94c31)
Hata Düzeltmeleri
- Alanda değiştiriciler olduğunda
NullSafeMutableLiveData
hata analizi kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616) - Genel öğeler kullanılırken
NullSafeMutableLiveData
hata analizi kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)
Harici Katkı
NullSafeMutableLiveData
hata analizi kontrolünü iyileştirdiğiniz için maxsav'a teşekkür ederiz. (#147, b/183696616)NullSafeMutableLiveData
hata analizi kontrolünü iyileştirdiğiniz 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
yayınlandı. Sürüm 2.4.0-alpha01 bu kaydetmeleri içerir.
Davranış Değişiklikleri
lifecycle-process
,ProcessLifecycleOwner
uygulamasını başlatmak için artıkandroidx.startup
kullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.İlk kullanıma hazırlamak için kullanılan
ContentProvider
tools:node="remove"
kullandıysanız yoksa aşağıdaki işlemleri gerçekleştirmeniz 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
Lifecycle.repeatOnLifecycle
API kullanılarak yaşam döngüsü en az belirli bir durumda olduğunda yukarı akış akışından değerler yayan birFlow.flowWithLifecycle
API eklendi. Bu, yine yeniLifecycleOwner.addRepeatinJob
API'nin bir alternatifidir. (I0f4cd)
Hata Düzeltmeleri
- Yaşam döngüsü 2.3.1'den itibaren:
NonNullableMutableLiveData
lint kuralı artık düzgün bir şekilde null değeri farklı alan değişkenlerini birbirinden ayırt etmek için kullanılır. (b/169249668)
Yaşam Döngüsü Görünüm Modeli Oluşturma Sürümü 1.0.0
Sürüm 1.0.0-alpha07
16 Haziran 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
yayınlandı. 1.0.0-alpha07 sürümü bu kaydetmeleri içerir.
Çağlık API Değişiklikleri
viewModel()
artık isteğe bağlıViewModelStoreOwner
, çalışmayı kolaylaştırırLocalViewModelStoreOwner
dışındaki sahiplerle. Örneğin, artık belirli bir gezinme grafiğiyle ilişkilendirilmiş bir ViewModel 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
yayınlandı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.
Oluşturma'nın 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
yayınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Oluşturma'nın
1.0.0-beta07
sürümüyle uyumlu olacak şekilde güncellendi.
Hata Düzeltmeleri
- ui-test-manifest ve ui-tooling-data artık Android 12 (I6f9de, b/184718994) ile uyumlu
Sürüm 1.0.0-alpha04
7 Nisan 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
yayınlandı. 1.0.0-alpha04 sürümü bu kaydetmeleri içerir.
Bağımlılık Değişiklikleri
- Bu sürümde
androidx.hilt:hilt-navigation-compose
veandroidx.navigation:navigation-compose
izin veriliyorandroidx.compose.compiler:compiler:1.0.0-beta04
veandroidx.compose.runtime:runtime:1.0.0-beta04
üzerindeki bağımlılıkları senkronize edin. 1.0.0 için derleyici ile ç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
yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
LocalViewModelStoreOwner.current
artık şu sonucu döndürüyor: daha iyi belirlemek için null değer atanabilirViewModelStoreOwner
mevcut durumdaViewModelStoreOwner
olup olmadığını bileşimi.ViewModelStoreOwner
gerektiren API'ler, örneğinviewModel()
veNavHost
olarak bir istisna olsa da (ViewModelStoreOwner
ayarlanmamışsa) (Idf39a)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha02
24 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
LocalViewModelStoreOwner
artık şunları yapabilecek birprovides
işlevine sahip:asProvidableCompositionLocal()
API'nin yerini alarakCompositionLocalProvider
ile kullanılmalıdır. (I45d24)
Yaşam Döngüsü-Viewmodel-Oluşturma Sürümü 1.0.0-alpha01
10 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
viewModel()
composable veLocalViewModelStoreOwner
,androidx.compose.ui.viewinterop
konumundanandroidx.lifecycle.viewmodel.compose
paketindeki 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
yayınlandı. Sürüm 2.3.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
lint kuralı artık düzgün şekilde çalışabilir null değeri farklı olan alan değişkenlerini birbirinden ayırt etmek için kullanılır. (b/169249668)
Sürüm 2.3.0
Sürüm 2.3.0
10 Şubat 2021
androidx.lifecycle:lifecycle-*:2.3.0
yayınlandı. 2.3.0 sürümü bu kaydetmeleri içerir.
2.2.0'dan bu yana önemli değişiklikler
SavedStateHandle
ayrıştırılamayan sınıflar için destek:SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
yöntemini çağırmanıza olanak tanıyarak geç serileştirmeyi destekler. Bu şekilde,SavedStateHandle
durumunu kaydetmesi istendiğindesaveState()
için geri çağırma yapılacak birSavedStateProvider
sağlanır. Ayrıştırılamayan sınıfları kaydetme başlıklı makaleyi inceleyin.- Yaşam Döngüsü Davranışı Yaptırımı:
- LifecycleRegistry artık
DESTROYED
işlemini terminal durumu olarak zorunlu kılar. LifecycleRegistry
artık kendi 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 bir gereklilikti. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında kilitlenmelerin yakalanmasını zorlaştırıyordu. Kendi bileşenlerinize aitLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrollerin kapsamı dışında kalmayı seçebilirsiniz. Ancak buLifecycleRegistry
öğesine 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 Olay Yardımcıları:
State
ve geçiş yönü verildiğindeEvent
oluşturmak içinLifecycle.Event
öğesinedownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Yaşam döngüsünün doğrudanEvent
sonrasında geçireceğiState
sağlayangetTargetState()
yöntemi eklendi. withStateAtLeast
: Yaşam döngüsü durumu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan kod bloğunu çalıştıran, ardından sonuçla devam edenLifecycle.withStateAtLeast
API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir sevk görevlisi kullanmadıkları için mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)ViewTree
API'ler: YeniViewTreeLifecycleOwner.get(View)
veViewTreeViewModelStoreOwner.get(View)
API,View
örneği verildiğinde sırasıylaLifecycleOwner
veViewModelStoreOwner
içeren öğeleri almanıza olanak tanır. Bu özelliği doğru şekilde doldurmak için1.2.0
Etkinliği ile1.3.0
Parçası'na ve AppCompat 1.3.0-alpha01 ya da sonraki bir sürüme geçmeniz gerekir.findViewTreeLifecycleOwner
vefindViewTreeViewModelStoreOwner
Kotlin uzantıları sırasıylalifecycle-runtime-ktx
velifecycle-viewmodel-ktx
için kullanılabilir.LiveData.observe()
Kotlin uzantısının kullanımdan kaldırılması: lambda söz dizimini kullanmak için gerekenLiveData.observe()
Kotlin uzantısı, Kotlin 1.4 kullanılırken gerekli olmadığı için kullanımdan kaldırıldı.
Sürüm 2.3.0-rc01
16 Aralık 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
yayınlandı. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
SavedStateHandle
içinkeys()
yöntemi, durum kaydedilmeden önce ve kaydedildikten sonra tutarlı hale geldi. Artıkset()
vegetLiveData()
ile kullanılan anahtarların yanı sıra daha öncesetSavedStateProvider()
ile kullanılan anahtarları da içeriyor. (aosp/1517919, b/174713653)
Harici Katkı
- Yaşam döngüsüne duyarlı eş yordamları askıya almak için kullanılan API'ler artık
yield()
çağrılarını daha iyi işliyor. Teşekkürler Nicklas Ansman Giertz. (aosp/1430830, b/168777346)
Sürüm 2.3.0-beta01
1 Ekim 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
yayınlandı. Sürüm 2.3.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
LiveData.observe()
Kotlin uzantısı lambda söz dizimini kullanmak için gerekli olan kod, Kotlin 1.4'ü kullanırken gerekli değildir. (I40d3f)
Hata Düzeltmeleri
- Kotlin 1.4'ü (Id6471, b/165307851, b/165300826) kullanmak için Androidx'i yükseltin
Dokümanlardaki Değişiklikler
liveData
oluşturucu veasLiveData()
doküman, belirtilen zaman aşımı değerlerinin değiştirilmesiyle ilgili ayrıntıları içerecek şekilde güncellendi. (aosp/1122324)
Sürüm 2.3.0-alpha07
19 Ağustos 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
yayınlandı. 2.3.0-alpha07 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveData
Lint kontrolündeki bir kilitlenme sorunu düzeltildi. (aosp/1395367)
Sürüm 2.3.0-alpha06
22 Temmuz 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
yayınlandı. 2.3.0-alpha06 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
State
ve geçiş yönü verildiğindeEvent
oluşturmak içinLifecycle.Event
hedefinedownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Yaşam döngüsünün doğrudanEvent
sonrasında geçireceğiState
sağlayangetTargetState()
yöntemi eklendi. (I00887)- Yaşam döngüsü durumunu 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 devam ettirilen
Lifecycle.withStateAtLeast
API'leri eklendi yardımcı olur. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir sevk görevlisi kullanmadıkları için mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)
Davranış Değişiklikleri
- LifecycleRegistry artık
DESTROYED
işlemini terminal durumu olarak zorunlu kılar. (I00887) LifecycleRegistry
artık kendi 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 bir gereklilikti. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında kilitlenmelerin yakalanmasını zorlaştırıyordu. Kendi bileşenlerinize aitLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrollerin kapsamı dışında kalmayı açıkça seçebilirsiniz ancak buLifecycleRegistry
öğesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun gerçekleşmesini sağlamanız gerekir (Ie7280, b/137392809).
Hata Düzeltmeleri
NullSafeMutableLiveData
oyunundaki bir kilitlenme düzeltildi. (b/159987480)lifecycle-livedata-core-ktx
(ve özellikleNullSafeMutableLiveData
) ile gruplanan Lint kontrolleri içinObsoleteLintCustomCheck
düzeltildi. (b/158699265)
Sürüm 2.3.0-alpha05
24 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
yayınlandı. 2.3.0-alpha05 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
LiveData
,onActive()
veyaonInactive()
için yinelenen çağrıları önleyerek artık reentrant durumlarda daha iyi işlem sağlıyor. (b/157840298)- Android Studio 4.1 Canary 6 veya sonraki sürümleri kullanılırken Lint denetimlerinin ç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
yayınlandı. 2.3.0-alpha04 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
Lint kontrolündeki bir kilitlenme düzeltildi. (b/157294666)NonNullableMutableLiveData
Lint kontrolü artık, null olmayan bir parametreye sahip birMutableLiveData
üzerindenull
değerinin ayarlandığı çok daha fazla durumu kapsamaktadır. (b/156002218)
Sürüm 2.3.0-alpha03
20 Mayıs 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
serbest bırakıldı. 2.3.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
yöntemini çağırmanıza izin vererek geç serileştirmeyi desteklemektedir. Bu özellik,SavedStateHandle
öğesinin durumunu kaydetmesi istendiğindesaveState()
çağrısını alacak birSavedStateProvider
sağlar. (b/155106862)- Yeni bir
ViewTreeViewModelStoreOwner.get(View)
API'sı, verilenView
örneğini içerenViewModelStoreOwner
öğesini almanızı sağlar. Bunu doğru şekilde doldurmak için1.2.0-alpha05
Etkinliği,1.3.0-alpha05
Parçası ve AppCompat1.3.0-alpha01
'a yükseltmeniz gerekir.lifecycle-viewmodel-ktx
klasörünefindViewModelStoreOwner()
Kotlin uzantısı eklendi. (aosp/1295522)
Hata Düzeltmeleri
- Yaşam Döngüsü
2.3.0-alpha01
bölümünde yayınlananMutableLiveData
Lint denetimlerininlifecycle-livedata-core-ktx
yapı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
yayınlandı. 2.3.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
SavedStateViewModelFactory
artık, hazır olmayan veAndroidViewModel
desteğinin gerekli olmadığı durumları daha iyi desteklemek için oluşturucuya nullApplication
iletmenize izin veriyor. (aosp/1285740)
Hata Düzeltmeleri
- API 28 ve önceki cihazlarda sınıf doğrulama hatası önlenerek baştan başlatma performansı iyileştirildi. (aosp/1282118)
Sürüm 2.3.0-alpha01
4 Mart 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
yayınlandı. Sürüm 2.3.0-alpha01 bu kaydetmeleri içerir.
Yeni Özellikler
- Yeni bir
ViewTreeLifecycleOwner.get(View)
API'sı, verilenView
örneğini içerenLifecycleOwner
öğesini almanızı sağlar. Bunu doğru şekilde doldurmak için1.2.0-alpha01
Etkinliği ve1.3.0-alpha01
Parçası'na yükseltmeniz gerekir.lifecycle-runtime-ktx
bölgesindefindViewTreeLifecycleOwner
Kotlin uzantısı mevcut. (aosp/1182361, aosp/1182956) - Kotlin'de boş olmayan olarak tanımlanmış bir
MutableLiveData
içinnull
değeri ayarlarken sizi uyaran yeni bir Lint kontrolü eklendi. Bu,livedata-core-ktx
veyalivedata-ktx
yapıları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092) LifecycleOwner
öğesini uygulayan ve iş parçacığı açısından güvenli, değişebilirLifecycle
sağlayan birTestLifecycleOwner
sağlayan yeni birlifecycle-runtime-testing
yapısı mevcut. (aosp/1242438)
Hata düzeltmeleri
lifecycle-runtime
yapısının artık benzersiz bir paket adı var. (aosp/1187196)
Sürüm 2.2.0
ViewModel-Savedstate Sürüm 2.2.0
5 Şubat 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.
Yaşam döngüsü ViewModel SavedState artık diğer Yaşam Döngüsü yapılarıyla aynı sürümü paylaşıyor. 2.2.0
işlevinin davranışı, 1.0.0
işlevinin davranışıyla aynıdır.
Sürüm 2.2.0
22 Ocak 2020
androidx.lifecycle:lifecycle-*:2.2.0
yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.
2.1.0'dan bu yana önemli değişiklikler
- Yaşam Döngüsü Kotlin Entegrasyonu: Yeni
lifecycle-runtime-ktx
yapısı, yaşam döngüsü ve Kotlin eş yordamları arasında entegrasyon sağlar.lifecycle-livedata-ktx
, eş yordamlardan yararlanacak şekilde genişletildi. Daha ayrıntılı bilgi için Kotlin eş yordamlarını Mimari Bileşenlerle kullanma konusuna bakın. ViewModelProviders.of()
desteğinin sonlandırılması:ViewModelProviders.of()
desteği sonlandırıldı.1.2.0
Parçası'nı kullanırken aynı işlevselliği elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
oluşturucuya birFragment
veyaFragmentActivity
aktarabilirsiniz.lifecycle-extensions
Yapının Kullanımdan Kaldırılması: Yukarıda belirtilenViewModelProviders.of()
için desteğin sonlandırılmasıyla birlikte bu sürüm,lifecycle-extensions
bölgesindeki son API'nin desteğinin sonlandırıldığını gösteriyor. Bu yapı artık tamamen kullanımdan kaldırılmış olarak kabul edilmelidir.lifecycle-extensions
yerinelifecycle-extensions
yerine ihtiyaç duyduğunuz belirli Yaşam Döngüsü yapılarına (ör.LifecycleService
kullanıyorsanızlifecycle-service
,ProcessLifecycleOwner
kullanıyorsanızlifecycle-process
) uymanızı öneririz. Çünkülifecycle-extensions
için gelecekte bir2.3.0
sürümü yayınlanmayacaktır.- Gradle Artımlı Ek Açıklama İşleyici: Yaşam döngüsünün ek açıklama işlemcisi varsayılan olarak artımlıdır.
Uygulamanız Java 8 programlama dilinde yazılmışsa bunun yerine
DefautLifecycleObserver
kullanabilirsiniz: ve Java 7 programlama dilinde yazılmıştır veLifecycleEventObserver
kullanabilirsiniz.
Sürüm 2.2.0-rc03
4 Aralık 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
yayınlandı. Sürüm 2.2.0-rc03 bu kaydetmeleri içerir.
Hata düzeltmeleri
- Sahte bir
ViewModel
,ViewModelStore
içinde depolanıp daha sonra varsayılan fabrikayla sorgulandığında ortaya çıkan hata düzeltildi. - İlgili yaşam döngüsü etkinliği sırasında
launchWhenCreated
içindeDispatchers.Main.immediate
kullanımı ve benzer yöntemlerin eşzamanlı olarak çağrılması için sorunu düzeltin. (aosp/1156203)
Harici katkılar
- Sorunu düzeltmeye yardımcı olduğu için Anders Järleberg'e teşekkür ediyoruz. (aosp/1156203)
- Satır içi yürütme uygulamasını incelediği için Jetbrains'den Vsevolod Tolstopyatov'a teşekkür ederiz.
Bağımlılık değişiklikleri
- Yaşam Döngüsü Uzantıları artık
1.2.0-rc03
. Parçayı kullanıyor.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
yayınlandı. 2.2.0-rc02 sürümü bu kaydetmeleri içerir.
Hata düzeltmeleri
- Kitaplığın ProGuard kurulumunda, hedef API 29'un altındaysa 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
yayınlandı. Sürüm 2.2.0-rc01 bu kaydetmeleri içerir.
Hata düzeltmeleri
Dispatchers.Main.immediate
yerineDispatchers.Main
kullanılması nedeniylelaunchWhenCreated
ve ilgili yöntemlerin ilişkili yaşam döngüsü yönteminden bir kare daha geç çalıştırılmasına neden olan sorun düzeltildi. (aosp/1145596)
Harici katkılar
- Bu düzeltmeye katkıda bulunan Nicklas Ansman'a teşekkürler! (aosp/1145596)
Sürüm 2.2.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
yayınlandı. Sürüm 2.2.0-beta01 bu kaydetmeleri içerir.
Hata düzeltmeleri
- Yaşam döngüsü 2.2.0-alpha05'te
ProcessLifecycleOwner
sırasına göre eklenen regresyon ve etkinliğinLifecycleOwner
değeri Android 10 cihazlarda başlayıp devam ettirildi. (aosp/1128132) - Yaşam Döngüsü
2.2.0-alpha05
'nda oluşturulan velifecycle-process
öğesinin2.0.0
veya2.1.0
sürümü kullanılırkenNullPointerException
sorununa neden olan bir regresyon düzeltildi. (b/141536990)
Sürüm 2.2.0-alpha05
18 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
yayınlandı. 2.2.0-alpha05 sürümü bu kaydetmeleri içerir.
Hata düzeltmeleri
- Eş yordam canlı veri oluşturucuda bir yarış durumu düzeltildi. b/140249349
Sürüm 2.2.0-alpha04
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
veliveData
temel uygulaması artıkDispatchers.Main
yerineDispatchers.Main.immediate
kullanıyor. (b/139740492)
Harici katkılar
Dispatchers.Main.immediate
adlı evin kullanıma sunulmasına katkılarından dolayı Nicklas Ansman'a teşekkür ediyoruz. (aosp/1106073)
Sürüm 2.2.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
ViewModelStoreOwner
uygulamaları için artık isteğe bağlı olarakHasDefaultViewModelProviderFactory
uygulanabilir. Böylece varsayılanViewModelProvider.Factory
sağlanabilir. Bu işlem1.1.0-alpha02
Etkinliği,1.2.0-alpha02
Parçası ve Gezinme2.2.0-alpha01
için yapıldı. (aosp/1092370, b/135716331)
API değişiklikleri
ViewModelProviders.of()
desteği sonlandırıldı. Aynı işlevi elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
oluşturucuya birFragment
veyaFragmentActivity
aktarabilirsiniz. (aosp/1009889)
Sürüm 2.2.0-alpha02
2 Temmuz 2019
androidx.lifecycle:*:2.2.0-alpha02
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
API değişiklikleri
LiveDataScope.initialValue
,liveData
blokunun mevcut yayınlanan değerini izleyecekLiveDataScope.latestValue
ile değiştirildi.liveData
oluşturucuya,Duration
türündetimeout
parametreyi 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
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
- Bu sürümde, yaşam döngüsü ve LiveData için Kotlin eş yordamları için destek sağlayan yeni özellikler eklendi. Bunlarla ilgili ayrıntılı belgelere buradan ulaşabilirsiniz.
ViewModel-SavedState Sürüm 1.0.0
Sürüm 1.0.0
22 Ocak 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
yayınlandı. 1.0.0 sürümü bu kaydetmeleri içerir.
1.0.0'daki önemli özellikler
- Yeni SavedStateHandle sınıfı eklendi. Bu işlem,
ViewModel
sınıflarınızın kayıtlı duruma erişmesine ve katkıda bulunmasına olanak tanır. Bu nesne,ViewModel
sınıfının oluşturucusunda alınabilir. Fragments ve AppCompatActivity tarafından varsayılan olarak sağlanan fabrikalar,SavedStateHandle
öğesini otomatik olarak ekler. - AbstractSavedStateViewModelFactory eklendi. Bu sayede
ViewModel
cihazınız için özel fabrikalar oluşturabilir veSavedStateHandle
ürününe erişmelerini sağlayabilirsiniz.
ViewModel-Savedstate Sürüm 1.0.0-rc03
4 Aralık 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
yayınlandı. Sürüm 1.0.0-rc03 bu kaydetmeleri içerir.
Bağımlılık değişiklikleri
- Yaşam Döngüsü ViewModel SavedState artık
2.2.0-rc03
Yaşam Döngüsü'ne bağlı.
Viewmodel-Savedstate Sürüm 1.0.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.
Bağımlılık değişiklikleri
- Şimdi ise
2.2.0-rc02
yaşam döngüsüne bağlı.
ViewModel-SavedState Sürüm 1.0.0-rc01
23 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
, 1.0.0-beta01
şablonundan herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.
ViewModel-Savedstate Sürüm 1.0.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
yayınlandı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.
Hata düzeltmeleri
- SavedState ViewModel'e ilk kez
Activity.onActivityResult()
içinde erişildiğindeIllegalStateException
ile sonuçlanabilecek sorun düzeltildi. (b/139093676) AbstractSavedStateViewModelFactory
kullanılırkenIllegalStateException
düzeltildi. (b/141225984)
ViewModel-SavedState Sürüm 1.0.0-alpha05
18 Eylül 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
yayınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.
API değişiklikleri
SavedStateViewModelFactory
artıkAbstractSavedStateViewModelFactory
öğesini genişletmiyor veSavedStateHandle
yalnızca bunu isteyen ViewModeller için oluşturuldu (aosp/1113593)
ViewModel-SavedState Sürüm 1.0.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Çarpıcı Değişiklikler
lifecycle-viewmodel-savedstate
artıkfragment
öğesine bağlı değil. İlgiliSavedStateViewModelFactory(Fragment)
veSavedStateViewModelFactory(FragmentActivity)
oluşturucuları kaldırıldı. Bunun yerineSavedStateViewModelFactory
artık1.1.0-alpha02
Etkinliği,1.2.0-alpha02
Parçası ve Gezinme2.2.0-alpha01
için varsayılan fabrika olarak ayarlandı. (b/135716331)
ViewModel-SavedState Sürüm 1.0.0-alpha02
2 Temmuz 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
- Varsayılan değeri kabul eden
SavedStateHandle.getLiveData()
aşırı yüklemesi eklendi.
API Değişiklikleri
SavedStateVMFactory
,SavedStateViewModelFactory
olarak yeniden adlandırıldı.AbstractSavedStateVMFactory
,AbstractSavedStateViewModelFactory
olarak yeniden adlandırıldı.
ViewModel-Savedstate Sürüm 1.0.0-alpha01
13 Mart 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
yayınlandı. Bu ilk sürüm için tam kayıt günlüğünü burada bulabilirsiniz.
Yeni özellikler
- Artık
ViewModels
, kaydedilen duruma katkıda bulunabilir. Bunu yapmak için yeni kullanıma sunulan viewmodel fabrikasınıSavedStateVMFactory
kullanın ve ViewModel'iniz, parametre olarakSavedStateHandle
nesne alan bir oluşturucuya sahip olmalıdır.
Sürüm 2.1.0
2.0.0'dan bu yana önemli değişiklikler
- Yaşam döngüsü olaylarının akışının gerekli olduğu durumlar için
LifecycleEventObserver
eklendi. Gizli birGenericLifecycleObserver
sınıfı değil, herkese açık bir API'dir. LiveData.observe
yöntem veTransformations.*
yöntem için ktx uzantıları eklendi.- Kaynak
LiveData
değeri değiştirilene kadar değer üretmeyen yeni bir LiveData nesnesi oluşturanTransformations.distinctUntilChanged
eklendi. ViewModel.viewModelScope
uzantı özelliği eklenerek ViewModelleri'ne eş yordam desteği eklendi.
Sürüm 2.1.0
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.1.0
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Sürüm 2.1.0-rc01
2 Temmuz 2019
androidx.lifecycle:*:2.1.0-rc01
, androidx.lifecycle:*:2.1.0-beta01
şablonundan herhangi bir değişiklik yapılmadan yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.lifecycle:*:2.1.0-beta01
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
- Yaşam döngüleri beta sürümüne yükseltildi: Önceki alfa sürümlerde kullanıma sunulan API'ler (ör. dönüşümler ve gözlemler için
liveData
uzantı işlevleri, mülk yetkisi ileViewModel
başlatma ve diğerleri) stabilize edildi ve değişmeyecek.
Sürüm 2.1.0-alpha04
3 Nisan 2019
androidx.lifecycle:*:2.1.0-alpha04
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
API değişiklikleri
- Önemli değişiklik:
by viewModels()
veby activityViewModels()
özelliklerini destekleyen temel API, yalnızca birViewModelStoreOwner
yerine doğrudan birViewModelStore
desteği sağlayacak şekilde değiştirildi. (aosp/932932)
Sürüm 2.1.0-alpha03
13 Mart 2019
androidx.lifecycle:*:2.1.0-alpha03
yayınlandı. Bu sürüme dahil edilen taahhütlerin tam listesini burada bulabilirsiniz.
API değişiklikleri
ViewModelProvider.KeyedFactory
kaldırıldı.ViewModelProvider.Factory
ile birlikte ikinci arayüz, Kotlinby viewmodels {}
'deki mülk yetkisi gibi yeni özelliklerle pek iyi sonuç vermedi. (aosp/914133)
Sürüm 2.1.0-alpha02
30 Ocak 2019
androidx.lifecycle 2.1.0-alpha02
yayınlandı.
API değişiklikleri
LifecycleRegistry
artık, kullanımdan kaldırılansetState()
yönteminin yerini alan birsetCurrentState()
yöntemi içeriyor. (aosp/880715)
Hata düzeltmeleri
ViewModelStore
öğesini içeren öğe temizlendiğinde örnekViewModel
ö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
yayınlandı.
Yeni özellikler
- Yaşam döngüsü olaylarının akışının gerekli olduğu durumlar için
LifecycleEventObserver
eklendi. Bu, gizli birGenericLifecycleObserver
sınıfı yerine herkese açık bir API'dir. LiveData.observe
yöntem veTransformations.*
yöntem için ktx uzantıları eklendi.Transformations.distinctUntilChanged
yöntemi eklendi. Kaynak LiveData değeri değiştirilene kadar değer üretmeyen yeni birLiveData
nesnesi oluşturur.- ViewModels'de eş yordam desteği:
ViewModel.viewModelScope
uzantı özelliği eklendi. create
yöntemindekey
veClass
alan ViewModel'ler için bir fabrika olanViewModelProvider.KeyedFactory
eklendi.
Sürüm 2.0.0
Sürüm 2.0.0
21 Eylül 2018
2.0.0
yaşam döngüsü, ViewModel'de 2.0.0-rc01
üzerinden yapılan bir hata düzeltmesiyle yayınlandı.
Hata Düzeltmeleri
- b/112230489 oluşturucuları yanlış şekilde kaldıran bir ViewModel koruyucu kuralı düzeltildi
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- Alt arayüzleri değil, yalnızca uygulamaları saklayan LifecycleObserver ProGuard kuralı düzeltildi b/71389427
- Kod karartmaya ve daraltmaya izin veren ViewModel koruma kuralları düzeltildi
AndroidX öncesi sürümler
Yaşam Döngüsü'nü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 bir küçük değişiklik: android.arch.core.util.Function
, arch:runtime
yerine arch:common
taşındı. Böylece, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common
bölümünde bulabilirsiniz.
lifecycle:common
, lifecycle:runtime
ürününün bir bağımlılığıdır. Dolayısıyla bu değişiklik, doğrudan lifecycle:runtime
ürününü etkilemez, yalnızca sayfalandırmanın yaptığı gibi doğrudan lifecycle:common
bağımlı olan modülleri kapsar.
Sürüm 1.1.0
22 Ocak 2018
Paketleme Değişiklikleri
Yeni ve çok daha küçük bağımlılıklar artık mevcut:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API Değişiklikleri
- Kullanımdan kaldırılan
LifecycleActivity
veLifecycleFragment
artık kaldırıldı. Lütfen şunu kullanın:FragmentActivity
,AppCompatActivity
veyaFragment
desteği. ViewModelProviders
veViewModelStores
etiketlerine@NonNull
ek açıklama eklendiViewModelProviders
oluşturucu desteği sonlandırıldı. Lütfen statik yöntemlerini doğrudan kullanınViewModelProviders.DefaultFactory
desteği sonlandırıldı, lütfenViewModelProvider.AndroidViewModelFactory
kullanın- Statik
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
yöntemi, verileri almak için eklendiViewModel
veAndroidViewModel
örnekleri oluşturmaya uygun bir statikFactory
.