Yaşam döngüsü
Bu tabloda, androidx.lifecycle
grubundaki tüm yapı taşları listelenir.
Yapı | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
lifecycle-* | 2.8.7 | - | - | 2.9.0-alpha08 |
lifecycle-viewmodel-compose | 2.8.7 | - | - | 2.9.0-alpha08 |
Bağımlılıkları beyan etme
Lifecycle'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.7" 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.7" 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.7" 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.7" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 2.9
Sürüm 2.9.0-alpha08
11 Aralık 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
yayınlanır. 2.9.0-alpha08 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Test altındaki
ViewModel
ve ilişkili tüm bileşenleri yeniden oluşturarak sistem işleminin sona ermesini simüle etmek içinViewModelScenario.recreate
ekleyin. (Id6a69, b/381063087) - İlgili
findViewTree
API'leri aracılığıyla alınanLifecycleOwner
veViewModelStoreOwner
örnekleri artık bir görünümün ayrı ebeveynleri (ör.ViewOverlay
) aracılığıyla çözülebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için çekirdeğin sürüm notlarına veyaViewTree.setViewTreeDisjointParent
adresindeki dokümanlara bakın. (I800f4)
API Değişiklikleri
- Adlandırmaları ve paket organizasyonunu
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744) ile daha tutarlı hale getirin.
Hata Düzeltmeleri
- Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Ie4340, b/326456246) ViewModel.onCleared
dokümanı temizleme sırası. (I586c7, b/363984116)
Sürüm 2.9.0-alpha07
13 Kasım 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07
yayınlanır. 2.9.0-alpha07 sürümü bu taahhütleri içerir.
Kotlin Çok Platformlu Uyumluluk
- Yaşam döngüsü
ViewModel SavedState
artık KMP ile uyumludur. Bu sayedeSavedStateHandle
'ü ortak kodda kullanabilirsiniz. (Ib6394, b/334076622)
KotlinX Serileştirme Desteği
SavedState
1.3.0-alpha05
'e eklenen KotlinX Serialization desteğiyle,@Serializable
sınıflarını birSavedStateHandle
içinde depolamayı ve bu sınıfların işlem sona erdiğinde ve yeniden oluşturulduğunda otomatik olarak geri yüklenmesini kolaylaştırmak içinsaved
adlı bir üşengeç mülk temsilcisi kullanıma sunduk.saved
temsilcisinin, erişilene kadarinit
lambda'sını çağırmayacağını veyaSavedStateHandle
'ye hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
API Değişiklikleri
MutableStateFlow
döndürmek içingetMutableStateFlow
'üSavedStateHandle
'a ekleyin. Bu yeni işlev anahtara özeldir vegetLiveData
ile kullanılamaz. Aynı duruma erişmek için ikisini birden kullanmayı denerseniz bir istisna atılır. (I04a4f, b/375408415)
Sürüm 2.9.0-alpha06
30 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06
yayınlanır. 2.9.0-alpha06 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
Lifecycle.DESTROYED
durumu sonlandırıcıdır ve birLifecycle
'ı bu durumdan başka bir duruma taşıma girişimi artıkIllegalStateException
ile sonuçlanacaktır. (I116c4, b/370577987)SavedStateHandle
artık döndürülenBundle
değerinin boş olduğuSavedStateProvider.saveState()
öğelerini içermiyor. (I910b5, b/370577987)
Hata Düzeltmeleri
Lifecycle
DESTROYED
olduğundaLifecycle.eventFlow
artık doğru şekilde tamamlanıyor (I293b2, b/374043130)
Sürüm 2.9.0-alpha05
16 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
, önemli bir değişiklik içermeden yayınlandı. 2.9.0-alpha05 sürümü bu taahhütleri içerir.
Sürüm 2.9.0-alpha04
2 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04
yayınlanır. 2.9.0-alpha04 sürümü bu taahhütleri içerir.
Kotlin Çok Platformlu
lifecycle-viewmodel-savedstate
modülü,SavedStateHandle
gibi API'lerin gelecekteki bir sürümde ortak kaynak grubunda kullanıma sunulmasına hazırlanmak için KMP uyumlu olacak şekilde yapılandırıldı. (I503ed, I48764, b/334076622)
Sürüm 2.9.0-alpha03
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
yayınlanır. 2.9.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.8.6
:NullSafeMutableLiveData
lint hatası, akıllı yayınlar için desteği iyileştirerek yanlış pozitifleri önledi. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Yaşam Döngüsü
2.8.6
: Yaşam Döngüsü Çalışma Zamanı Derlemesi artık Derleme Çalışma Zamanı1.7.1
'na bağlıdır - Yaşam Döngüsü Çalışma Zamanı artık ProfileInstaller
1.4.0
'e bağlıdır
Sürüm 2.9.0-alpha02
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
yayınlanır. 2.9.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.8.5
bölümünde:androidx.lifecycle.ReportFragment
ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı
androidx.compose.ui.platform.LocalLifecycleOwner
'ü ortak kaynak kümesine (KMP) taşıyın. Katkıda bulunduğu için JetBrains'den Ivan Matkov'a teşekkürler. (8cd5d03)- Yaşam döngüsü
2.8.5
: SavedStateHandle.saveable` uzantı temsilcisi artık null değerleri destekler. Katkıda bulunduğunuz için teşekkürler Roman Kalukiewicz. (0d78ea6)
Sürüm 2.9.0-alpha01
7 Ağustos 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
yayınlanır. 2.9.0-alpha01 sürümü bu taahhütleri içerir.
Kotlin Çok Platformlu
lifecycle-testing
artık KMP ile uyumlu. (Iea41e)linuxArm64
kotlin çok platformlu hedefi için destek ekleme (I139d3, b/338268719)
Yeni Özellikler
- ViewModel'leri tek başına test etmek için
onCleared
(tüm platformlar) veSavedStateHandle
(yalnızca Android) desteğiyleViewModelScenario
sınıfı sağlayan yeni birandroidx.lifecycle:lifecycle-viewmodel-testing
KMP yapısını kullanabilirsiniz. (337f68d, c9b3409, 9799a95c, b/264602919) ViewModelProvider
ileViewModel
oluşturma işlemi artık iş parçacığı açısından güvenlidir;@MainThread
ek açıklamaları kaldırıldı. (Ifd978, b/237006831)
API Değişiklikleri
- Anonim
CreationExtras.Key
nesnelerinin oluşturulmasını basitleştirmek içinCreationExtras.Key()
fabrika işlevini ekleyin. (I970ee) CreationExtras
artık Kotlin'de içeriklerin yerel dilde değiştirilmesini sağlamak için haritaya benzer operatör aşırı yüklemelerini içeriyor.in
,+=
ve+
'ninCreationExtras
ile kullanılmasına olanak tanır. (Ib4353)CreationExtras
artıkequals
,hashCode
vetoString
yöntemlerini uygulamaktadır. (Ib4353)NewInstanceFactory
artık JVM masaüstü ve Android hedeflerinde kullanılabilir. (d3d0892)- Kotlin dili sürüm 2.0'da temel uygulamayı güvenli bir şekilde göstermek için satır içi uzantı özelliği (I39df2)
Hata Düzeltmeleri
- Yeni platform API'lerine erişim manuel olarak belirtilmemiştir. Bunun nedeni, AGP 7.3 veya sonraki sürümlerde R8 kullanıldığında (ör. R8 3.3 sürümü) ve AGP 8.1 veya sonraki sürümlerde tüm derlemelerde (ör. D8 8.1 sürümü) API modelleme aracılığıyla otomatik olarak gerçekleşmesidir. AGP kullanmayan müşterilerin D8 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (If6b4c, b/345472586)
Sürüm 2.8
Sürüm 2.8.7
30 Ekim 2024
androidx.lifecycle:lifecycle-*:2.8.7
yayınlanır. 2.8.7 sürümü bu taahhütleri içerir.
API Değişiklikleri
androidx.compose.ui.platform.LocalLifecycleOwner
artık ortak kaynak kümesinde (KMP) kullanılabilir. (6a3f5b3)lifecycle-runtime-compose
:desktop
yapı kaldırıldı ve-jvmStubs
ile-linuxx64Stubs
yapıları eklendi. Bu hedeflerin hiçbiri kullanılmak için tasarlanmamıştır. Bunlar, Jetbrains Compose çalışmalarına yardımcı olan yer tutuculardır. (6a3f5b3)
2.8.6 sürümü
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.6
yayınlanır. 2.8.6 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveData
lint hatası, akıllı yayınlar için desteği iyileştirerek yanlış pozitifleri önledi. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Yaşam Döngüsü Çalışma Zamanı Derlemesi artık Derleme Çalışma Zamanı
1.7.1
'na bağlıdır
Sürüm 2.8.5
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.5
yayınlanır. 2.8.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
androidx.lifecycle.ReportFragment
ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı
SavedStateHandle.saveable
uzantı temsilcisi artık null değerleri destekliyor. Katkıda bulunduğunuz için teşekkürler Roman Kalukiewicz. (0d78ea6)
Sürüm 2.8.4
24 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.4
yayınlanır. 2.8.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
LiveData.asFlow()
artık döndürülen akıştaLiveData
üzerinde önceden ayarlanmış bir değer alındıktan hemen sonra akışın tamamlandığı durumları (örneğin,take(1)
kullanılırken) doğru şekilde ele alıyor. (I9c566)Lifecycle*Effect
tamamlama işlemi artık idempotent (yani, yaşam döngüsü durdurulduğu içinonStopOrDispose
çağrıldıysa yaşam döngüsü tekrarSTARTED
durumuna dönmediği sürece, kullanımdan kaldırıldığında ikinci kez çağrılmaz). (I5f607, b/352364595)
Sürüm 2.8.3
1 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.3
yayınlanır. 2.8.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kod küçültme kullanılırken Lifecycle 2.8'in Compose 1.6.0 ve önceki sürümlerle geriye dönük uyumluluğuyla ilgili bir sorun düzeltildi. (aosp/3133056, b/346808608)
Sürüm 2.8.2
12 Haziran 2024
androidx.lifecycle:lifecycle-*:2.8.2
yayınlanır. 2.8.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Lifecycle 2.8.X'in Compose 1.6.X veya önceki sürümlerle kullanılmasıyla ilgili
CompositionLocal LocalLifecycleOwner not present
hataları düzeltildi. Artık Lifecycle 2.8.2'yi herhangi bir Compose sürümüyle herhangi bir geçici çözüm uygulamadan kullanabilirsiniz. (aosp/3105647, b/336842920) ViewModelProvider
,compileOnly
yaşam döngüsü bağımlılıkları önceki sürümlerini 2.8 ve sonraki sürümlerle karıştırırken artık kilitlenmeyecek. Böylece LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltildi. (I80383, b/341792251)
Sürüm 2.8.1
29 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.1
yayınlanır. 2.8.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
lifecycle-viewmodel-compose
artık yalnızcacompose-runtime
ile ortak bağımlılığa sahiptir.compose-ui
ile ortak bağımlılığı kaldırılmıştır. Android yapıları, uyumluluk içincompose-ui
değerini korur. (aosp/3079334, b/339562627)ViewModel
'ın mülk temsilcilerini kullanansaveable
entegrasyonu artık otomatik olarak oluşturulan anahtarın bir parçası olarak sınıf adını kullanıyor. Bu sayede, birden fazla sınıf aynıSavedStateHandle
'yi kullandığında çakışmalar önleniyor. (aosp/3063463)
2.8.0 sürümü
14 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0
yayınlanır. 2.8.0 sürümü bu taahhütleri içerir.
2.7.0 sürümünden beri yapılan önemli değişiklikler
LocalLifecycleOwner
, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzündenlifecycle-runtime-compose
'e taşındı.lifecycle-runtime-compose
yapıları artıkLifecycleOwner
belirli birLifecycle.State
değerinin altına düştüğünden sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanıza olanak tanıyandropUnlessResumed
vedropUnlessStarted
API'lerini içeriyor. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerini işlemekten kaçınmak için bu yöntem Gezinme Oluşturma ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametresi olduğundan kendi dağıtıcınızı veSupervisorJob()
'ınızı eklemenize veyarunTest
içinde bulunanbackgroundScope
'yi kullanarak varsayılan değeri 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'de yeniden yazıldı ve artıkCloseable
yerineAutoClosable
kullanıyor. ArtıkAutoCloseable
nesnelerinigetCloseable()
üzerinden almalarını sağlayan birkey
ile eklemeyi destekler.LifecycleStartEffect
veLifecycleResumeEffect
API'lerinin anahtar olmadan çağrılması artık hata olarak değerlendiriliyor. Bu, bu API'lerin yansıttığıDisposableEffect
API'siyle aynı kurala dayanır.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
,LiveData.toPublisher(lifecycleOwner)
için kullanımdan kaldırıldı.lifecycle-livedata-core-ktx
kotlin uzantıları artıklifecycle-livedata-core
modülüne taşındı.NullSafeMutableLiveData
, birçok yanlış pozitif sonucu önlemek için yeniden yapılandırıldı.
Yaşam döngüsü Kotlin çok platformlu uyumluluğu
Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
ve LifecycleRegistry
'deki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor.
Etkilenen yapılardır:
lifecycle-common
, çoğu API'yicommon
'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.lifecycle-runtime
, çoğu API'yicommon
'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.lifecycle-runtime-ktx
artık boştur ve tüm API'lerlifecycle-runtime
'a taşınmıştır.lifecycle-runtime-compose
, tüm API'lericommon
'e taşır veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısını dağıtır.
ViewModel Kotlin Çoklu Platform Uyumluluğu
lifecycle-viewmodel
yapıları ve ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor.
Bu değişiklikle uyumlu olmak için ViewModelProvider
üzerinde java.lang.Class<T>
alan yöntemler gibi yöntemler artık kotlin.reflect.KClass<T>
alan eşdeğer bir yönteme sahip.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırıldığında birkaç önemli değişiklik vardır:
ViewModelProvider
örneği oluşturma işlemi artık doğrudan oluşturucunun çağrılması yerineViewModelProvider.create()
yöntemleri aracılığıyla gerçekleştiriliyor.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel fabrikaların
ViewModelProvider.Factory
'ten türemesi veCreationExtras
alancreate
yöntemini kullanması veyaviewModelFactory
Kotlin DSL'sini kullanması önerilir.
- Özel fabrikaların
- JVM dışı platformlarda özel fabrika olmadan
ViewModelProvider
kullanılmasıUnsupportedOperationException
ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmazsa parametre içermeyen ViewModel kurucusu kullanılarak uyumluluk korunur. viewModelScope
,Dispatchers.Main
'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext
Linux).
Etkilenen yapılardır:
lifecycle-viewmodel
, çoğu API'yicommon
'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.lifecycle-viewmodel-ktx
artık boştur ve tüm API'lerlifecycle-viewmodel
'a taşınmıştır.lifecycle-viewmodel-compose
, tüm API'lericommon
'e taşır veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısını dağıtır.
Davranış Değişiklikleri
InitializerViewModelFactory
(viewModelFactory
oluşturucu işlevi dahil), aynıclazz: KClass<VM : ViewModel>
ile birinitializer
zaten eklenmişse artık birIllegalArgumentException
oluşturur. (Ic3a36)
Bilinen Sorunlar
lifecycle-*:2.8.0
için minimum Compose sürümü 1.7.0-alpha05 (b/336842920) olmalıdır.
Sürüm 2.8.0-rc01
1 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
yayınlanır. 2.8.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
lifecycle-common
sınıfları için temel profilin düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artıklifecycle-runtime
AAR'da paketlenir. (aosp/3038274, b/322382422)- Bir ViewModel'e bağlı
AutoCloseable
örneklerinin nasıl temizleneceğiyle ilgili yanlışlıkla yapılan bir sıralama değişikliği düzeltildi. Önceki sıralama (addCloseable(String, AutoCloseable)
, ardındanaddClosable(AutoCloseable)
, ardındanonCleared()
) geri yüklendi. (aosp/3041632) - Yerel ve JVM masaüstü ortamları için
viewModelScope
'ün varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)
Harici Katkı
- JVM masaüstünde ana iş parçacığı kontrolünü iyileştirdiğiniz için teşekkürler Victor Kropp. (aosp/3037116)
Sürüm 2.8.0-beta01
17 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
yayınlanır. 2.8.0-beta01 sürümü bu taahhütleri içerir.
Yeni Özellikler
lifecycle-runtime-compose
yapıları artık Kotlin Multiplatform ile uyumlu. Koducommon
'a taşındı veandroidx.compose
için çok platformlu desteğiyle eşleşen bir Android yapısı yayınlandı. (If7a71, I4f4a0, b/331769623)
Sürüm 2.8.0-alpha04
3 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
yayınlanır. 2.8.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
yapıları artık Kotlin Multiplatform ile uyumlu. Koducommon
'a taşındı veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısı yayınlandı. Bu değişikliği karşılamak için KompozitviewModel
yöntemi artıkjava.lang.Class
'ye ek olarakKClass
değerini de kabul ediyor. (b/330323282)
Hata Düzeltmeleri
NullSafeMutableLiveData
, birçok yanlış pozitif sonucu önlemek için yeniden yapılandırıldı. (I2d8c1, Iafb18, I03463, I7ecef)
Bağımlılık güncellemesi
lifecycle-viewmodel-compose
yapı artık Compose 1.6.0'a bağlıdır.- 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ınlanır. 2.8.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametresi olduğundan kendi dağıtıcınızı veSupervisorJob()
'ınızı eklemenize veyarunTest
içinde bulunanbackgroundScope
'yi kullanarak varsayılan değeri 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 Çok Platformlu Uyumluluk
lifecycle-viewmodel
yapıları ve ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor. (b/214568825)
Bu değişiklikle uyumlu olmak için ViewModelProvider
üzerinde java.lang.Class<T>
alan yöntemler gibi yöntemler artık kotlin.reflect.KClass<T>
alan eşdeğer bir yönteme sahip.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırıldığında birkaç önemli değişiklik vardır:
ViewModelProvider
örneği oluşturma işlemi artık doğrudan oluşturucunun çağrılması yerineViewModelProvider.create()
yöntemleri aracılığıyla gerçekleştiriliyor.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel fabrikaların
ViewModelProvider.Factory
'ten türemesi veCreationExtras
alancreate
yöntemini kullanması veyaviewModelFactory
Kotlin DSL'sini kullanması önerilir.
- Özel fabrikaların
- JVM dışı platformlarda özel fabrika olmadan
ViewModelProvider
kullanılmasıUnsupportedOperationException
ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmazsa parametre içermeyen ViewModel kurucusu kullanılarak uyumluluk korunur. viewModelScope
,Dispatchers.Main
'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext
Linux).
Davranış Değişiklikleri
InitializerViewModelFactory
(viewModelFactory
oluşturucu işlevi dahil) artık aynıclazz: KClass<VM : ViewModel>
değerine sahip birinitializer
eklenmişse birIllegalArgumentException
oluşturur. (Ic3a36)
Hata Düzeltmeleri
ViewModel.getCloseable
artık yinelenen anahtarları yönetiyor:key
'ın ilişkili birAutoCloseable
kaynağı varsa eski kaynak değiştirilir ve hemen kapatılır. (Ibeb67)ViewModel
öğesininviewModelScope
özelliğine erişim artık iş parçacığı açısından güvenlidir. (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 lifecycle-runtime-compose'e taşındı. Katkıda bulunduğunuz için teşekkürler Jake Wharton. (I6c41b, b/328263448)
Sürüm 2.8.0-alpha02
21 Şubat 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
yayınlanır. 2.8.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
LifecycleOwner
belirli birLifecycle.State
değerinin altına düştüğünde bile gerçekleşen tıklama veya diğer etkinlikleri bırakmanıza olanak tanıyandropUnlessResumed
vedropUnlessStarted
API'leri eklendi. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerini işlemekten kaçınmak için bu yöntem, Gezinme Oluşturma ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin Dönüşümleri
ViewModel
artık Kotlin ile yazılmıştır (I16f26, b/214568825)lifecycle-viewmodel-ktx
kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Id787b, b/274800183)lifecycle-runtime-ktx
kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Ic3686, b/274800183)lifecycle-livedata-core-ktx
kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (I54a3d, b/274800183)
Kotlin Çok Platformlu Uyumluluk
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
veLifecycleRegistry
'deki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor. (b/317249252)
API Değişiklikleri
LifecycleStartEffect
veLifecycleResumeEffect
API'lerinin anahtar olmadan çağrılması artık hata olarak değerlendiriliyor. Bu, bu API'lerin yansıttığıDisposableEffect
API'siyle aynı kurala dayanır. (Ib0e0c, b/323518079)ViewModel
artıkCloseable
yerineAutoCloseable
kullanıyor. Bu değişiklik geriye dönük uyumludur. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
,LiveData.toPublisher(lifecycleOwner)
için kullanımdan kaldırıldı. (Iabe29, b/262623005)
Harici Katkı
- Jetbrains'den Ivan Matkov'a, yaşam döngüsünü Kotlin Multiplatform'a taşımamıza yardımcı olduğu için teşekkür ederiz. (aosp/2926690, I0c5ac, If445d)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
yayınlanır. 2.8.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
ViewModel
artıkgetCloseable()
üzerinden alınmasına olanak tanıyan birkey
ileCloseable
nesneleri eklemeyi destekliyor. (I3cf63)
Sürüm 2.7
2.7.0 sürümü
10 Ocak 2024
androidx.lifecycle:lifecycle-*:2.7.0
yayınlanır. 2.7.0 sürümü bu taahhütleri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
TestLifecycleOwner
artık, durum değişikliğinin ve tümLifecycleObserver
geri çağırmalarının döndürülmeden önce tamamlanmasını sağlayan bir askıya alma işlevisetCurrentState()
içeriyor.currentState
mülkünün doğrudan ayarlanmasının aksine, bu yöntemderunBlocking
kullanılmaz. Bu sayede,runTest
tarafından sağlanan bir coroutine gibi bir coroutine içinde güvenli bir şekilde kullanılabilir.map
veswitchMap
işlevlerininLiveData
uzantıları artıkdistinctUntilChanged
işlevinin davranışını yansıtıyor.LiveData
işlevininvalue
özelliği ayarlanmışsa döndürülenLiveData
işlevininvalue
özelliğini doldurmak içinmap
/switchMap
işlevi hemen çağrılır. Bu, ilk değerin ilk bileşimin 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
'u gözlemlemeye başladıktan sonra uygulanmaya devam eder.- Bu sürümde, işlem sona erip yeniden oluşturulduktan sonra
SavedStateHandle
'ün özelParcelable
sınıflarını düzgün şekilde geri yüklememesi sorunu düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde bir dizili dizi manuel olarak oluşturulur) veget
,getLiveData
vegetStateFlow
ile ilgili dokümanlar artık bu sınırlamayı özellikle belirtmektedir. LifecycleObserver
ile ilişkili ProGuard saklama kuralları kaldırıldı. Bu, API'leri yansıma yoluyla kullanmak isteyen korumalı kodun (ör. desteği sonlandırılan@OnLifecycleEvent
ek açıklamasını kullanarak) belirli kullanım alanı için kendi koruma kurallarını sağlaması gerektiği anlamına gelir.
Yaşam Döngüsü Etkinliği Gözlemlenebilirliği
LifecycleEventObserver
kullanmaya alternatif olarak artıkLifecycle.asFlow()
uzantı yöntemi aracılığıylaLifecycle.Event
içinFlow
gözlemleyebilirsiniz.- Jetpack Compose kullanıcıları artık
Lifecycle.Event
'a dayalı Compose yan etkilerini ç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 başlatılan ve durdurulan ile devam ettirilen ve duraklatılan etkinliklerin çiftlerini işlemek için
LifecycleStartEffect
veLifecycleResumeEffect
kullanabilir. Bu API,DisposableEffect
API'sini yansıtır ve durum yükselirken yapılan değişikliğin, durum düşerken geri alınması gereken durumlar için uygundur.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Daha fazla bilgi için Yaşam döngüsü etkinliklerinde kod çalıştırma başlıklı makaleyi inceleyin.
Yaşam Döngüsü Durumu Gözlemlenebilirliği
- Mevcut
Lifecycle.State
, artıkLifecycle.currentStateFlow
mülkü aracılığıyla gözlemlenebilir. Bu mülk,value
'ın mevcutLifecycle.State
olduğu birStateFlow
döndürür. - Jetpack Compose kullanıcıları,
Lifecycle.State
'u 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 Döngü yaşam durumu bilgilerini akışlarla toplama başlıklı makaleyi inceleyin.
Sürüm 2.7.0-rc02
13 Aralık 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
yayınlanır. 2.7.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- İşlem sona erip yeniden oluşturulduktan sonra
SavedStateHandle
'ün özelParcelable
sınıflarını düzgün şekilde geri yüklememesi sorunu düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde bir dizili dizi manuel olarak oluşturulur) veget
,getLiveData
vegetStateFlow
ile ilgili dokümanlar artık bu sınırlamayı özellikle belirtmektedir. (I0b55a)
Sürüm 2.7.0-rc01
15 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
yayınlanır. 2.7.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
LifecycleStartEffect
veLifecycleResumeEffect
,LifecycleOwner
değiştiğinde artık efekt bloğunu doğru şekilde kaldırıp yeniden oluşturuyor. (Ia25c6)
Sürüm 2.7.0-beta01
1 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01
, herhangi bir değişiklik yapılmadan yayınlanır. 2.7.0-beta01 sürümü bu taahhütleri içerir.
- Beta sürüm yükseltmesi. Bu sürümde önemli bir değişiklik yok.
Sürüm 2.7.0-alpha03
18 Ekim 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
yayınlanır. 2.7.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
lifecycle-runtime-testing
artık bir coroutine içindeykencurrentState
alanını kullanarakTestLifecycleOwner
öğesininLifecycle.State
değerini ayarlamayı önlemek için yeni bir Lint denetimi içeriyor. Lint denetimi artıksetCurrentState
'ü askıya almayı öneriyor. Bu sayedeLifecycle.State
, engellenmeden ayarlanabilir. (Icf728, b/297880630)
Hata Düzeltmeleri
- Hem ilk çağrıda hem de sonraki çağrıda aynı
LiveData
örneğinin döndürülmesinin,LiveData
örneğinin kaynak olarak eklenmesini engellediğiLiveData.switchMap
ile ilgili sorun düzeltildi. (Ibedcba7)
Sürüm 2.7.0-alpha02
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
yayınlanır. 2.7.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
TestLifecycleOwner
artık kullanıcılaraTestLifecycleOwner
'ürunTest
tarafından sağlanan bir iş parçacığı içinde kullanma seçeneği sunmak içinsetCurrentState()
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 bir değer ayarlanmışsa döndürülenLiveData
'ınvalue
değerini ayarlayarak Jetpack Compose'da elde edilen LiveData'nın ilk kompozisyonda doğru durumda olmasını sağlar. (I91d2b, b/269479952)ViewModel
'ninaddCloseable()
,ViewModel
onCleared()
için zaten bir arama aldıysaCloseable
'yi hemen kapatır. (I4712e, b/280294730)
Hata Düzeltmeleri
- Yaşam döngüsü
2.6.2
: Durum geri yüklenirse,save()
üst öğeSavedStateRegistry
'e kaydedilmeden çağrılır ve ardından durum tekrar geri yüklenirseSavedStateHandle
'ın işlem sona erdikten sonra doğru şekilde geri yüklenmemesi sorunu düzeltildi. Bu işlem,rememberSaveable
ile Gezinme Oluşturma'nınNavHost
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ınlanır. 2.7.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
Lifecycle.State
artıkLifecycle.currentStateFlow
aracılığıyla Compose-observable oldu. Bu işlev,value
'ın mevcutLifecycle.State
olduğu birStateFlow
döndürür. (Ib212d, b/209684871)Lifecycle.Event
'ler 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öreSideEffect
oluşturma işlemlerini çalıştırmak içinLifecycleResumeEffect
API eklendi. (I60386, b/235529345) Lifecycle.Event.ON_START
veLifecycle.Event.ON_STOP
etkinlik geri çağırmalarına dayalı OluşturSideEffect
'ları çalıştırmak içinLifecycleStartEffect
API eklendi. (I5a8d1, b/235529345)Lifecycle.Event
'ye dayalıSideEffect
oluşturma işlemlerini çalıştırmak içinLifecycleEventEffect
API eklendi. (Ic9794, b/235529345)Lifecycle.State
'u doğrudan OluşturState
olarak göstermek 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
için ayarlanmış bir değer varsa döndürülenLiveData
değerinivalue
olarak ayarlar. Bu, gözlem davranışını değiştirmez.LiveData
kaynağından gelen güncellenmiş değerler, yalnızcadistinctUntilChanged()
kaynağından döndürülenLiveData
değerini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)LifecycleObserver
ile ilişkili proguard keep kuralları kaldırıldı. Bu, API'leri yansıma yoluyla kullanmak isteyen korumalı kodun, belirli kullanım alanı için kendi koruma kurallarını sağlaması gerektiği anlamına gelir. (Ia12fd)
Sürüm 2.6
Sürüm 2.6.2
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.6.2
yayınlanır. 2.6.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Durum geri yüklenirse,
save()
üst öğeSavedStateRegistry
'ye kaydedilmeden çağrılır ve ardından durum tekrar geri yüklenirseSavedStateHandle
'ün işlem sona erdikten sonra doğru şekilde geri yüklenmemesi sorunu düzeltildi. Bu işlem,rememberSaveable
ile Gezinme Oluşturma'nınNavHost
arasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.6.1
22 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.1
yayınlanır. 2.6.1 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemeleri
lifecycle-viewmodel-savedstate
artık SavedState1.2.1
değerine bağlıdır. (cd7251)- Yaşam döngüsü artık ProfileInstaller
1.3.0
'e bağlıdır. (f9d30b)
2.6.0 sürümü
8 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.0
yayınlanır. 2.6.0 sürümü bu taahhütleri içerir.
2.5.0 sürümünden beri yapılan önemli değişiklikler
LiveData
artıkLiveData
üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni birisInitialized
özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı içinliveData.value
'ninnull
döndürmesi ile açık birnull
değeri döndürmesi arasındaki farkı ayırt etmenize olanak tanır.MediatorLiveData
artık ilk değeri ayarlamak için bir kurucu içeriyor.collectAsStateWithLifecycle()
içinStateFlow
veFlow
'ye, akışlardan veri toplayan ve en son değerini yaşam döngüsü bilinciyle Oluşturma Durumu olarak temsil eden yeni bir uzantı eklendi.- Duraklatma dağıtıcısının kullanılması bazı durumlarda kaynakların boşa harcanmasına yol açabileceğinden
Lifecycle.launchWhenX
yöntemleri veLifecycle.whenX
yöntemlerinin desteği sonlandırılmıştır.Lifecycle.repeatOnLifecycle
kullanılması önerilir. Çalışmayı tek seferlik askıya alma hakkında daha fazla bilgi için lütfen bunun neden güvenli olmadığını açıklayan bu açıklamaya bakın. - 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 uyumluluğunu korur. Aşağıdaki sınıflarda, Kotlin'de yazılmış sınıflar için kaynak 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
sınıfınınonChanged
yönteminin boşluk kabul edebileceği durum, artık genel türün boşluk kabul edebileceği durumla eşleşiyor.Observer.onChanged()
'ün boş değer kabul etmesini istiyorsanızObserver
'u boş değer türüne sahip bir şekilde başlatmanız gerekir. - Aşağıdaki sınıflar da Kotlin'e dönüştürülmüştür ancak kaynak uyumluluğunu korur:
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ınlanır. 2.6.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
LiveData.distinctUntilChanged()
uzantısı artık öncekiLiveData
için ayarlanmış bir değer varsa döndürülenLiveData
değerinivalue
olarak ayarlar. Bu, gözlem davranışını değiştirmez.LiveData
kaynağından gelen güncellenmiş değerler, yalnızcadistinctUntilChanged()
kaynağından döndürülenLiveData
değerini 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ınlanır. 2.6.0-beta01 sürümü bu taahhütleri içerir.
Kotlin Dönüşümleri
LifecycleOwner
artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumlu olmayan bir değişikliktir. Artık öncekigetLifecycle()
işlevini uygulamak yerinelifecycle
mülkünü geçersiz kılmalıdırlar. (I75b4b, b/240298691)ViewModelStoreOwner
artık Kotlin'de. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumlu olmayan bir değişikliktir. Artık öncekigetViewModelStore()
işlevini uygulamak yerineviewModelStore
mülkünü geçersiz kılmalıdırlar. (I86409, b/240298691)LifecycleOwner
'tekilifecycleScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
'tenlifecycle-common
yapıya taşındı. (I41d78, b/240298691)Lifecycle
'tekicoroutineScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
'tanlifecycle-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ınlanır. 2.6.0-alpha05 sürümü bu taahhütleri içerir.
Kotlin Dönüşümleri
Transformations
artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış ve doğrudanTransformations.map
gibi söz dizimleri kullanan sınıflar için kaynak uyumsuz bir değişikliktir. Kotlin kodu artık 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ümlerinin desteği sonlandırılır ve KotlinFunction1
alan sürümleriyle değiştirilir. Bu değişiklik, ikili uyumluluğu korur. (I8e14f)ViewTreeViewModelStoreOwner
artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak içinandroidx.lifecycle.setViewTreeViewModelStoreOwner
veandroidx.lifecycle.findViewTreeViewModelStoreOwner
sınıflarınınView
bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu sürüm, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
arayüzü artık Kotlin'de yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Bu sınıflar artık önceki ilgili işlevleri uygulamak yerinedefaultViewModelProviderFactory
vedefaultViewModelCreationExtras
özelliklerini geçersiz kılmalıdır. (Iaed9c, b/240298691)Observer
artık Kotlin ile yazılmış.onChanged()
yöntemi artık parametresi içinvalue
adını kullanıyor. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
veProcessLifecycleOwner
artık Kotlin ile yazılmıştır (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Sürüm 2.6.0-alpha04
11 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
yayınlanır. 2.6.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
LiveData
artıkLiveData
üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni birisInitialized
özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı içinliveData.value
'ninnull
döndürmesi ile açık birnull
değeri döndürmesi arasındaki farkı ayırt etmenize olanak tanır. (Ibd018)
API Değişiklikleri
lifecycle-runtime-compose
'uncollectAsStateWithLifecycle()
API'leri artık deneysel durumda değil. (I09d42, b/258835424)- Duraklatma dağıtıcısının kullanılması bazı durumlarda kaynakların israf edilmesine yol açabileceğinden
Lifecycle.launchWhenX
yöntemleri veLifecycle.whenX
yöntemlerinin desteği sonlandırılmıştır.Lifecycle.repeatOnLifecycle
kullanılması önerilir. (Iafc54, b/248302832)
Kotlin Dönüşümleri
ViewTreeLifecycleOwner
artık Kotlin ile yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak içinandroidx.lifecycle.setViewTreeLifecycleOwner
veandroidx.lifecycle.findViewTreeLifecycleOwner
sınıflarınınView
bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu,lifecycle-runtime-ktx
'teki önceki Kotlin uzantısının yerini alır. Bu sürüm, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
artık Kotlin ile yazılmıştır. Daha öncelifecycle-reactivestreams-ktx
'te bulunan Kotlin uzantılarılifecycle-reactivestreams
modülüne taşındı ve Kotlin'de yazılan kodun birincil yüzeyi haline geldi. Kotlin uzantı yöntemi API'lerini kullanmıyorsanız bu, Kotlin'de yazılmış kod için kaynak uyumsuz bir değişikliktir. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
veViewModelStore
artık Kotlin'de yazılmıştır (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Hata Düzeltmeleri
SavedStateHandle
,get()
sınıfını yanlış sınıf türüyle çağırırken artıkClassCastException
ile kilitlenmiyor. (I6ae7c)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
yayınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Farklı yaşam döngüsü modülleri arasındaki kısıtlamaların beklendiği gibi çalışmamasıyla ilgili sorun düzeltildi. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
tarafından oluşturulan hatalar artık geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha 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ınlanır. 2.6.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
MediatorLiveData
artık ilk değeri ayarlamak için bir kurucu içeriyor. (Ib6cc5, b/151244085)
Hata Düzeltmeleri
Lifecycle
yapıları artık birbirine bağımlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlar içeriyor. Bu sayede, bir yapı yükseltildiğinde diğer bağımlılıklar da otomatik olarak yükseltiliyor. b/242871265FlowLiveData.asFlow()
artık iş parçacığı güvenliği ve bağlamın korunmasını sağlamak için kendiChannel
uygulamasını kullanmak yerine bircallbackFlow
oluşturuyor. (I4a8b2, b/200596935)FlowLiveData
'ınasLiveData
işlevi artık yeniLiveData
nesnesini oluştururkenStateFlow
nesnesinin başlangıç değerini koruyacak. (I3f530, b/157380488)- Yaşam döngüsü
2.5.1
:Lifecycle
2.4 ve sonraki sürümlerde durum bilgisine sahip kurucu kullanıldığındaAndroidViewModelFactory
'ın özel uygulamaları artıkcreate(modelClass)
işlevini doğru şekilde çağırıyor (I5b315, b/238011621)
Sürüm 2.6.0-alpha01
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
yayınlanır. 2.6.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
collectAsStateWithLifecycle
'ninStateFlow
veFlow
özelliklerine, akışlardan veri toplayan ve en son değerini yaşam döngüsü bilinciyle Oluşturma Durumu olarak temsil eden yeni bir uzantı eklendi. Yaşam döngüsü en az belirli birLifecycle.State
değerinde olduğunda akış toplanır ve yeni emisyon, durum değerine ayarlanır. Yaşam döngüsü buLifecycle.State
değerinin altına düştüğünde akış toplama işlemi durur ve durum değerinin güncellenmesi engellenir. (I1856e, b/230557927)
Sürüm 2.5
Sürüm 2.5.1
27 Temmuz 2022
androidx.lifecycle:lifecycle-*:2.5.1
yayınlanır. 2.5.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
AndroidViewModelFactory
'ün özel uygulamaları artıkLifecycle
2.4 ve sonraki sürümlerde durum bilgisine sahipAndroidViewModelFactory
kurucusunu kullanırkencreate(modelClass)
işlevini doğru şekilde çağırıyor. (I5b315, b/238011621)
2.5.0 sürümü
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0
yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.
2.4.0 sürümünden beri yapılan önemli değişiklikler
SavedStateHandle
artıkLiveData
kullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlow
döndüren birgetStateFlow()
API sunuyor.ViewModel CreationExtras: Özel bir
ViewModelProvider.Factory
yazarken artık sırasıylaApplication
veyaSavedStateHandle
'ye erişmek içinAndroidViewModelFactory
ya daAbstractSavedStateViewModelFactory
'yi genişletmeniz gerekmez. Bunun yerine bu alanlar,create
'in yeni aşırı yükleme işlevicreate(Class<T>, CreationExtras)
aracılığıylaViewModelProvider.Factory
alt sınıfının her birineCreationExtras
olarak sağlanır. Bu ekstralar, sırasıyla Etkinlik1.5.0
ve Bölüntü1.5.0
kullanılırken Etkinliğiniz veya Bölüntünü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ıkCreationExtras
'i birincil veri kaynağı olarak kullanarakViewModelProvider.Factory
'nizi bir veya daha fazla lambda başlatıcı (özel fabrikanızın desteklediği herViewModel
sınıfı için bir tane) açısından tanımlamanıza olanak tanıyan birviewModelFactory
Kotlin DSL'si sağlı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şturma zorunluluğu olmadanViewModel
örneği oluşturmak için lambda fabrikası kullanan birviewModel()
API sunuyor.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
SavedStateHandle Compose Saver Entegrasyonu:
lifecycle-viewmodel-compose
yapı artıkSavedStateHandle.saveable
'da, bir "ViewModel"ınSavedStateHandle
tarafından desteklenenrememberSaveable
benzeri davranışa olanak tanıyan yeni deneysel API'ler içeriyor.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
addCloseable()
API'si veonCleared()
'da herhangi bir manuel işlem gerektirmedenViewModel
temizlendiğinde kapatılacak bir veya daha fazlaCloseable
nesnesiniViewModel
'ye eklemenize olanak tanıyan yeni bir kurucu aşırı yükleme eklendi.Örneğin, bir ViewModel'e ekleyebileceğiniz ancak test aracılığıyla kontrol edebileceğiniz bir coroutine kapsamı oluşturmak için
Closeable
'yi uygulayan birCoroutineScope
oluşturabilirsiniz:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
Bu,
viewModelScope
ile aynı yaşam süresini korurkenViewModel
yapıcınızda 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
öğesiniINITIALIZED
'danDESTROYED
'ye taşımaya çalışmak artıkLifecycle
öğesinin bağlı bir gözlemcisinin olup olmadığına bakılmaksızın her zaman birIllegalStateException
hatası oluşturur.LifecycleRegistry
,DESTROYED
durumuna ulaştığında gözlemcilerini temizleyecektir.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
yayınlanır. 2.5.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
ViewModelProvider
, compileOnly yaşam döngüsü bağımlılıkları önceki sürümlerinin 2.5 ve sonraki sürümlerle karıştırılması durumunda artık kilitlenmeyecek. (I81a66, b/230454566)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
yayınlanır. 2.5.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
MediatorLiveData.addSource()
artıknull
kaynağı gözlemcilere iletmek yerinenull
kaynağı aktardığındaNullPointerException
atıyor.(Ibd0fb, b/123085232)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
yayınlanır. 2.5.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
SavedStateHandle.saveable
mülk temsilcileri eklendi. Bu temsilciler,SavedStateHandle
'a durumu kaydetmek için mülk adlarını anahtar olarak kullanır (I8bb86, b/225014345)
Hata Düzeltmeleri
- Birincil olmayan bir alt gezinme sekmesinde bir
NavHost
'nin başka birNavHost
'nin içine yerleştirilmesinin, birden fazla geri yığını kullanırkenIllegalStateException
'ye yol açmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)
Sürüm 2.5.0-alpha06
6 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
yayınlanır. 2.5.0-alpha06 sürümü bu taahhütleri içerir.
Yeni Özellikler
rememberSaveable
ile eşdeğerlik içinSavedStateHandle.saveable
'e deneyselMutableState
aşırı yükleme ekleyin (I38cfe, b/224565154)
API Değişiklikleri
CreationExtras
artık mühürlü değil, soyut. (Ib8a7a)
Hata Düzeltmeleri
SavedStateHandleController
nedeniyle oluşan birIllegalStateException: 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ınlanır. 2.5.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
modülü artıkSavedStateHandle
içindeki değerlerinrememberSaveable
'ın kullandığı kayıtlı örnek durumuna doğru şekilde entegre edilmesini sağlayan deneysel bir API olanSavedStateHandleSaver
'ü sağlıyor. (Ia88b7, b/195689777)
API Değişiklikleri
- Java'da Lifecycle 2.3 ve sonraki Lifecycle sürümleriyle ilgili bir uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)
Hata Düzeltmeleri
SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatılmış olsa bileCreationExtras
kullanımını destekliyor. Ek bilgiler 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ınlanır. 2.5.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
SavedStateHandle
artıkLiveData
kullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlow
döndüren birgetStateFlow()
API sunuyor. (Iad3ab, b/178037961)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
yayınlanır. 2.5.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
addCloseable()
API'si veViewModel
'ye bir veya daha fazlaCloseable
nesnesi eklemenize olanak tanıyan yeni bir kurucu aşırı yükleme işlevi eklendi. Bu nesneler,onCleared()
'da herhangi bir manuel işlem gerektirmedenViewModel
temizlendiğinde kapatılır. (I55ea0)lifecycle-viewmodel
artık birincil veri kaynağı olarakCreationExtras
'ı kullanarak belirliViewModel
sınıflarını işlemek için lambda eklemenize olanak tanıyan birInitializerViewModelFactory
sağlıyor. (If58fc, b/216687549)lifecycle-viewmodel-compose
artık özel birViewModelProvider.Factory
oluşturulmasını gerektirmedenViewModel
örneği oluşturmak için bir lambda fabrikası kullanan birviewModel()
API sunuyor. (I97fbb, b/216688927)
API Değişiklikleri
- Artık
lifecycle-viewmodel-compose
üzerindenCreationExtras
ileViewModel
oluşturabilirsiniz. (I08887, b/216688927)
Davranış değişiklikleri
Lifecycle.State
öğesiniINITIALIZED
'danDESTROYED
'ye taşımaya çalışmak artıkLifecycle
öğesinin bağlı bir gözlemcisinin olup olmadığına bakılmaksızın her zaman birIllegalStateException
hatası oluşturur. (I7c390, b/177924329)LifecycleRegistry
,DESTROYED
durumuna ulaştığında gözlemcilerini temizleyecektir. (I4f8dd, b/142925860)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
yayınlanır. 2.5.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
SavedStateHandle
veSavedStateViewModelFactory
Kotlin'e dönüştürüldü. Bu sayede her iki sınıftaki genel türlerin boşluk kabul etme özelliği iyileştirildi. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
işlev parametresi artık boş değer kabul eden bir çıkışa sahip olabilir. (I40396, b/132923666)LiveData
-ktx uzantıları artık bu işlevler çağrılırken sonucun kullanılmasını zorunlu kılmak için@CheckResult
ile ek açıklamaya sahiptir. (Ia0f05, b/207325134)
Davranış değişiklikleri
SavedStateHandle
, belirtilen anahtar için bir değer olmadığında artık defaultValue değerini düzgün şekilde depolar. (I1c6ce, b/178510877)
Hata Düzeltmeleri
- Yaşam döngüsü
2.4.1
:ProcessLifecycleInitializer
'inStartupException
atmasını önleyen düzeltmelerin varsayılan olarak kullanılabilmesi içinlifecycle-process
, Startup 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724) - Özel
AndroidViewModel
sınıflarında parametreler yanlış sırada olduğunda veViewModel
oluşturulmaya çalışıldığında artık daha iyi bir hata mesajı gösteriliyor. (I340f7, b/177667711) - Artık uygulama ayarlamanıza gerek kalmadan
AndroidViewModelFactory
kullanarakCreationExtras
üzerinden görüntüleme modeli oluşturabilirsiniz. (I6ebef, b/217271656)
Sürüm 2.5.0-alpha01
26 Ocak 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
yayınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.
ViewModel CreationExtras
Bu sürümle birlikte, ViewModel
öğesinin nasıl oluşturulacağını yeniden yapılandırmaya yönelik temelleri atıyoruz. Her biri ek işlevler ekleyen katı bir ViewModelProvider.Factory
alt sınıfı grubu (AndroidViewModelFactory
aracılığıyla Application
oluşturucu parametresine, SavedStateViewModelFactory
ve AbstractSavedStateViewModelFactory
aracılığıyla SavedStateHandle
oluşturucu parametresine vb. izin verme) yerine, yeni bir kavram olan CreationExtras
'e dayanan durumsuz fabrikalar dünyasına geçiyoruz. (Ia7343, b/188691010, b/188541057)
Bu değişiklikle birlikte ViewModelProvider
artık ViewModelProvider.Factory
'nin önceki create(Class<T>)
yöntemine doğrudan çağrı göndermez. Bunun yerine, create
için yeni bir aşırı yükleme çağrısı yapar: create(Class<T>, CreationExtras)
. Bu, ViewModelProvider.Factory
örneğinin doğrudan uygulanmasının artık bu yeni CreationExtras
öğelerinin her birine erişebildiği anlamına gelir:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: BuString
,ViewModelProvider.get()
'ye ilettiğiniz ö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
'a erişim sağlar.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
, bu ViewModel'i oluşturmak için kullanılanViewModelStoreOwner
'a erişim sağlar.SavedStateHandleSupport.DEFAULT_ARGS_KEY
,SavedStateHandle
oluşturmak için kullanılması gereken bağımsız değişkenlerBundle
'ye erişim sağlar.
Bu ekstralar, Etkinlik 1.5.0-alpha01
, Fragment 1.5.0-alpha01
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ıyorsanız CreationExtras
boş olur. ViewModelProvider.Factory
'un mevcut 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 ileride kullanılacak CreationExtras
yolunu desteklemek için yeniden yazılmıştır.
Bu CreationExtras
'ler, fabrika alt sınıflarının katı bir hiyerarşisine ihtiyaç duymadan her ViewModel
'ye yalnızca ihtiyacınız olan bilgileri aktaran bir ViewModelProvider.Factory
oluşturmanıza olanak tanır:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
Yalnızca ihtiyaç duyan ViewModel için SavedStateHandle
oluşturmak üzere SavedStateHandleSupport
'deki CreationExtras
üzerinde createSavedStateHandle()
Kotlin uzantı işlevini kullanırız. (Ia6654, b/188541057)
Özel CreationExtras
, ComponentActivity
veya Fragment
'inizdeki getDefaultViewModelCreationExtras()
'ü geçersiz kılarak sağlanabilir. Böylece, özel ViewModelProvider.Factory
'iniz için yerleşik bir destekli enjeksiyon biçimi olarak kullanılabilir. Bu ekstralar, doğrudan ViewModelProvider
ile kullanıldığında veya by viewModels()
ve by activityViewModels()
Kotlin mülk uzantılarını kullanırken özel fabrikanıza otomatik olarak sunulur. (I79f2b, b/207012584, b/207012585, b/207012490)
Hata Düzeltmeleri
- Bir
SavedStateHandle
için sağlanan varsayılan değerin,SavedStateHandle
'ten özel olarak kaldırılmış olsa bile işlem sona erip yeniden oluşturulduktan sonra yeniden görünmesi sorunu düzeltildi. Bunun sonucundaSavedStateHandle
artık varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)
Sürüm 2.4
Sürüm 2.4.1
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.4.1
yayınlanır. 2.4.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.5.0-alpha01
'den geri bağlandı: BirSavedStateHandle
için sağlanan varsayılan değerin,SavedStateHandle
'dan özel olarak kaldırılmış olsa bile işlem sona erip yeniden oluşturulduktan sonra yeniden görünmesi sorunu düzeltildi. Bunun sonucundaSavedStateHandle
artık varsayılan değerleri ve geri yüklenen değerleri birlikte birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b) lifecycle-process
artıkProcessLifecycleInitializer
kullanılmasınınStartupException
'e neden olduğu bir gerileme düzeltilen Androidx Startup 1.1.1 sürümüne bağlıdır. (b/216490724)
Sürüm 2.4.0
27 Ekim 2021
androidx.lifecycle:lifecycle-*:2.4.0
yayınlanır. 2.4.0 sürümü bu taahhütleri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
@OnLifecycleEvent
desteği sonlandırıldı. Bunun yerineLifecycleEventObserver
veyaDefaultLifecycleObserver
kullanılmalıdır.androidx.lifecycle:lifecycle-viewmodel-compose
kitaplığı eklendi.viewModel()
kompozisyon oluşturma veLocalViewModelStoreOwner
sağlar.- Kaynakta değişiklik:
ViewModelProvider
, Kotlin'de yeniden yazıldı.ViewModelProvider.Factory.create
yöntemi artık null değer atanabilir genel türe izin vermiyor.
- Kaynakta değişiklik:
androidx.lifecycle:lifecycle-runtime-ktx
'e yeni coroutine API'ler eklendi:Lifecycle.repeatOnLifecycle
, yaşam döngüsü en azından belirli bir durumdayken bir coroutine içinde bir kod bloğu yürüten API. Yaşam döngüsü hedef durumdan çıkıp hedef duruma girerken engelleme iptal edilir ve yeniden başlatılır;Flow.flowWithLifecycle
, yaşam döngüsü en azından belirli bir durumdayken yukarı akış akışından değer yayan API.DefaultLifecycleObserver
,lifecycle.lifecycle-common-java8
'tenlifecycle.lifecycle-common
'ye taşındı.lifecycle.lifecycle-common-java8
artıklifecycle.lifecycle-common
'a ek olarak başka işlev sağlamıyor. Bu nedenle,lifecycle.lifecycle-common-java8
'e olan bağımlılıklifecycle.lifecycle-common
ile değiştirilebilir.lifecycle-viewmodel-ktx
'teki coroutine olmayan API'lerlifecycle-viewmodel
modülüne taşındı.lifecycle-process
artıkProcessLifecycleOwner
öğesini başlatmak içinandroidx.startup
kullanıyor.Daha önce bu işlem
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.Geçmişte işlem yaşam döngüsünü başlatmak için kullanılan
ContentProvider
yerinetools:node="remove"
kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Sürüm 2.4.0-rc01
29 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
, Yaşam Döngüsü 2.4.0-beta01'den herhangi bir değişiklik olmadan yayınlanmıştır. 2.4.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 2.4.0-beta01
15 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
yayınlanır. 2.4.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
@OnLifecycleEvent
desteği sonlandırıldı. Bunun yerineLifecycleEventObserver
veyaDefaultLifecycleObserver
kullanılmalıdır. (I5a8fa)- DefaultLifecycleObserver,
androidx.lifecycle.lifecycle-common-java8
yerineandroidx.lifecycle.lifecycle-common
konumuna taşındı.androidx.lifecycle.lifecycle-common-java8
artıkandroidx.lifecycle.lifecycle-common
'a ek olarak başka işlevler sağlamıyor. Bu nedenle,androidx.lifecycle.lifecycle-common-java8
'e olan bağımlılıkandroidx.lifecycle.lifecycle-common
ile değiştirilebilir. (I021aa) lifecycle-viewmodel-ktx
'teki coroutine olmayan API'lerlifecycle-viewmodel
modülüne taşındı. (I6d5b2)
Harici Katkı
Sürüm 2.4.0-alpha03
4 Ağustos 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
yayınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Kaynakta değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı.
ViewModelProvider.Factory.create
yöntemi artık nullable genel türüne izin vermiyor. (I9b9f6)
Davranış Değişiklikleri
Lifecycle.repeatOnLifecycle
:block
artık yürütme işlemi tekrarlanırken her zaman seri olarak çağrılır. (Ibab33)
Harici Katkı
repeatOnLifecycle
dokümanlarında kod snippet'lerini düzelttiği için chao2zhang'e teşekkürler. #205.
Sürüm 2.4.0-alpha02
16 Haziran 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
yayınlanır. 2.4.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
lifecycle-runtime-ktx
'a,repeateOnLifecycle
'ninonStart()
veyaonResume()
içinde yanlış kullanıldığını algılayan yeni birRepeatOnLifecycleWrongUsage
dil bilgisi denetimi eklendi. (706078, b/187887400)
API Değişiklikleri
- Yapılandırılmış eşzamanlılığa saygı gösteren ve daha kolay anlaşılan
Lifecycle.repeatOnLifecycle
API'si içinLifecycleOwner.addRepeatingJob
API kaldırıldı. (I4a3a8) - Diğer
androidx.startup.Initializer
'ların bunları bağımlılık olarak kullanabilmesi içinProcessLifecycleInitializer
'yi herkese açık hale getirin. (I94c31)
Hata Düzeltmeleri
- Alanda değiştirici olduğunda
NullSafeMutableLiveData
lint kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616) - Genel türlerin kullanıldığı
NullSafeMutableLiveData
lint kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)
Harici Katkı
NullSafeMutableLiveData
lint kontrolünü iyileştirdiğiniz için teşekkürler maxsav. (#147, b/183696616)NullSafeMutableLiveData
lint kontrolünü iyileştirdiğiniz için teşekkürler kozaxinan. (#161, b/184830263)
Sürüm 2.4.0-alpha01
24 Mart 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
yayınlanır. 2.4.0-alpha01 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
lifecycle-process
artıkProcessLifecycleOwner
öğesini başlatmak içinandroidx.startup
kullanıyor.Daha önce bu işlem
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.Geçmişte işlem yaşam döngüsünü başlatmak için kullanılan
ContentProvider
yerinetools:node="remove"
kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API Değişiklikleri
- Yaşam döngüsü en azından belirli bir durumdayken
Lifecycle.repeatOnLifecycle
API'yi kullanarak yukarı akış akışından değer yayınlayan birFlow.flowWithLifecycle
API eklendi. Bu API, yeniLifecycleOwner.addRepeatinJob
API'ye de alternatiftir. (I0f4cd)
Hata Düzeltmeleri
- Yaşam döngüsü 2.3.1'den itibaren:
NonNullableMutableLiveData
lint kuralı artık farklı boşluk kabul etme durumuna sahip alan değişkenlerini doğru şekilde ayırt edebilir. (b/169249668)
Yaşam Döngüsü Görünüm Modeli Derleme 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ınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.
Büyük API Değişiklikleri
viewModel()
artık isteğe bağlı birViewModelStoreOwner
alır. Bu sayede,LocalViewModelStoreOwner
dışındaki sahiplerle çalışmayı kolaylaştırır. Örneğin, artık belirli bir gezinme grafiğiyle ilişkili 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ınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.
Oluştur 1.0.0-beta08
sürümü ile 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ınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Oluştur
1.0.0-beta07
sürümüyle uyumlu olacak şekilde güncellendi.
Hata Düzeltmeleri
- ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumludur (I6f9de, b/184718994)
Sürüm 1.0.0-alpha04
7 Nisan 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.
Bağımlılık Değişiklikleri
- Bu sürüm,
androidx.hilt:hilt-navigation-compose
veandroidx.navigation:navigation-compose
'unandroidx.compose.compiler:compiler:1.0.0-beta04
veandroidx.compose.runtime:runtime:1.0.0-beta04
'daki bağımlılıkları senkronize etmesine olanak tanır. 1.0.0 için derleyici ve çalışma zamanının eşleşmesi gerekir.
Sürüm 1.0.0-alpha03
10 Mart 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
LocalViewModelStoreOwner.current
artık mevcut kompozisyondaViewModelStoreOwner
'ın kullanılıp kullanılamayacağını daha iyi belirlemek için boş bırakılabilir birViewModelStoreOwner
döndürüyor.viewModel()
veNavHost
gibiViewModelStoreOwner
gerektiren API'ler,ViewModelStoreOwner
ayarlanmasa bile istisna atar. (Idf39a)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha02
24 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
LocalViewModelStoreOwner
artıkasProvidableCompositionLocal()
API'nin yerini alarakCompositionLocalProvider
ile kullanılabilenprovides
işlevlerine sahiptir. (I45d24)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha01
10 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
viewModel()
bileşeni veLocalViewModelStoreOwner
,androidx.compose.ui.viewinterop
'denandroidx.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ınlanır. 2.3.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
lint kuralı artık farklı boşluk kabul etme durumuna sahip alan değişkenlerini doğru şekilde ayırt edebilir. (b/169249668)
Sürüm 2.3.0
Sürüm 2.3.0
10 Şubat 2021
androidx.lifecycle:lifecycle-*:2.3.0
yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
- Bölünemeyen sınıflar için
SavedStateHandle
desteği:SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
'ı çağırmanıza olanak tanıyarak veSavedStateHandle
'dan durumunu kaydetmesi istendiğindesaveState()
'e geri çağırma isteği gönderecek birSavedStateProvider
sağlayarak üşengeç serileştirmeyi destekliyor. Bölünemeyen sınıfları kaydetme başlıklı makaleyi inceleyin. - Yaşam Döngüsü Davranış Yaptırım Politikası:
- LifecycleRegistry artık
DESTROYED
değerini son durum olarak zorunlu kılıyor. LifecycleRegistry
artık yöntemlerinin ana iş parçacığında çağrıldığını doğrular. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir şarttı. Ana olmayan iş parçalarından gözlemciler eklendiğinde, çalışma zamanında kilitlenmelerin yakalanması zorlaşıyordu. Kendi bileşenlerinizin sahip olduğuLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, buLifecycleRegistry
'ye farklı iş parçalarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
- LifecycleRegistry artık
- Yaşam döngüsü durumu ve etkinlik yardımcıları:
State
ve geçiş yönü verildiğindeEvent
oluşturmak içinLifecycle.Event
'yedownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Yaşam döngüsününEvent
'den hemen sonra geçeceğiState
değerini sağlayangetTargetState()
yöntemi eklendi. withStateAtLeast
: Yaşam döngüsü durumunu bekleyen ve durum değişikliği noktasında askıya almayan bir kod bloğunu eşzamanlı olarak ç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 dağıtıcı kullanmadıkları için mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)ViewTree
API'leri: YeniViewTreeLifecycleOwner.get(View)
veViewTreeViewModelStoreOwner.get(View)
API'si, birView
örneği verildiğinde sırasıyla kapsayıcıLifecycleOwner
veViewModelStoreOwner
öğelerini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için1.2.0
etkinliğine,1.3.0
fragmanına ve AppCompat 1.3.0-alpha01 veya sonraki bir sürüme yükseltmeniz gerekir.findViewTreeLifecycleOwner
vefindViewTreeViewModelStoreOwner
Kotlin uzantıları sırasıylalifecycle-runtime-ktx
velifecycle-viewmodel-ktx
'te kullanılabilir.LiveData.observe()
Kotlin uzantısının desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olanLiveData.observe()
Kotlin uzantısının desteği, Kotlin 1.4'te gerekli olmadığı için sonlandırıldı.
Sürüm 2.3.0-rc01
16 Aralık 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
yayınlanır. 2.3.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
SavedStateHandle
içinkeys()
yöntemi artık durum kaydedilmeden önce ve sonra tutarlı. Artıkset()
vegetLiveData()
ile kullanılan anahtarlara ek olarak daha öncesetSavedStateProvider()
ile kullanılan anahtarları da içeriyor. (aosp/1517919, b/174713653)
Harici Katkı
- Yaşam döngüsü bilinçli iş parçacıklarını askıya alan API'ler artık
yield()
çağrılarını daha iyi yönetiyor. 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ınlanır. 2.3.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Lambda söz dizimini kullanmak için gerekli olan
LiveData.observe()
Kotlin uzantısı, Kotlin 1.4'te gerekli olmadığından artık desteklenmiyor. (I40d3f)
Hata Düzeltmeleri
- androidx'i Kotlin 1.4'ü kullanacak şekilde yükseltme (Id6471, b/165307851, b/165300826)
Belge Değişiklikleri
liveData
oluşturucu veasLiveData()
dokümanları, belirli 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ınlanır. 2.3.0-alpha07 sürümü bu taahhütleri 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ınlanır. 2.3.0-alpha06 sürümü bu taahhütleri içerir.
Yeni Özellikler
State
ve geçiş yönü verildiğindeEvent
oluşturmak içinLifecycle.Event
sınıfınadownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Yaşam döngüsününEvent
'den hemen sonra geçeceğiState
değerini sağlayangetTargetState()
yöntemi eklendi. (I00887)- Yaşam döngüsü durumunu bekleyen ve durum değişikliği noktasında duraklatma içermeyen bir kod bloğunu eşzamanlı olarak çalıştıran, ardından sonuçla devam eden
Lifecycle.withStateAtLeast
API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir dağıtıcı kullanmadıkları için mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)
Davranış Değişiklikleri
- LifecycleRegistry artık
DESTROYED
değerini son durum olarak zorunlu kılıyor. (I00887) LifecycleRegistry
artık yöntemlerinin ana iş parçacığında çağrıldığını doğrular. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir şarttı. Ana olmayan iş parçalarından gözlemciler eklendiğinde, çalışma zamanında kilitlenmelerin yakalanması zorlaşıyordu. Kendi bileşenlerinizin sahip olduğuLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz ancak bu durumda, buLifecycleRegistry
'ye farklı iş parçalarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir (Ie7280, b/137392809)
Hata Düzeltmeleri
NullSafeMutableLiveData
'te yaşanan kilitlenme düzeltildi. (b/159987480)lifecycle-livedata-core-ktx
ile birlikte (ve özellikleNullSafeMutableLiveData
ile) sunulan Lint kontrolleri için birObsoleteLintCustomCheck
düzeltildi. (b/158699265)
Sürüm 2.3.0-alpha05
24 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
yayınlanır. 2.3.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
LiveData
artıkonActive()
veyaonInactive()
için yinelenen çağrılardan kaçınarak yeniden giren durumları daha iyi yönetiyor. (b/157840298)- Android Studio 4.1 Canary 6 veya sonraki sürümler kullanılırken Lint kontrollerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)
Sürüm 2.3.0-alpha04
10 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
yayınlanır. 2.3.0-alpha04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
Hata analizi kontrolünde yaşanan bir kilitlenme düzeltildi. (b/157294666)NonNullableMutableLiveData
lint denetimi artık null olmayan bir tür parametresi içeren 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
sürümleri yayınlanır. 2.3.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
'u çağırmanıza olanak tanıyarak veSavedStateHandle
'den durumunu kaydetmesi istendiğindesaveState()
'a geri çağrılacak birSavedStateProvider
sağlayarak tembel serileştirmeyi destekliyor. (b/155106862)- Yeni
ViewTreeViewModelStoreOwner.get(View)
API, birView
örneği verildiğinde kapsayıcıViewModelStoreOwner
'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik1.2.0-alpha05
, Fragment1.3.0-alpha05
ve AppCompat1.3.0-alpha01
'e yükseltmeniz gerekir.lifecycle-viewmodel-ktx
'afindViewModelStoreOwner()
Kotlin uzantısı eklendi. (aosp/1295522)
Hata Düzeltmeleri
- Yaşam döngüsü
2.3.0-alpha01
kapsamında yayınlananMutableLiveData
lint kontrollerininlifecycle-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ınlanır. 2.3.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
SavedStateViewModelFactory
artık, hazır bulunmayan veAndroidViewModel
desteğine ihtiyaç duyulmayan durumları daha iyi desteklemek için oluşturucusuna nullApplication
iletmenize olanak tanır. (aosp/1285740)
Hata Düzeltmeleri
- API 28 ve daha eski sürümlerin yüklü olduğu cihazlarda sınıf doğrulama hatası önlenerek soğuk 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ınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Yeni
ViewTreeLifecycleOwner.get(View)
API, birView
örneği verildiğinde kapsayıcıLifecycleOwner
'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik1.2.0-alpha01
ve Fragment1.3.0-alpha01
'e geçmeniz gerekir.findViewTreeLifecycleOwner
Kotlin uzantısılifecycle-runtime-ktx
'te kullanılabilir. (aosp/1182361, aosp/1182956) - Kotlin'de null olmayan olarak tanımlanmış bir
MutableLiveData
üzerindenull
değeri ayarlarken sizi uyaran yeni bir Lint denetimi eklendi. Bu,livedata-core-ktx
veyalivedata-ktx
yapıları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092) LifecycleOwner
'yi uygulayan ve iş parçacığı güvenli, değişken birLifecycle
sağlayan yeni birlifecycle-runtime-testing
yapı mevcuttur.TestLifecycleOwner
(aosp/1242438)
Hata düzeltmeleri
lifecycle-runtime
yapısını benzersiz bir paket adı verin. (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ınlanır. 2.2.0 sürümü bu taahhütleri 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
'ün davranışı, 1.0.0
'ün davranışıyla aynıdır.
Sürüm 2.2.0
22 Ocak 2020
androidx.lifecycle:lifecycle-*:2.2.0
yayınlanır. 2.2.0 sürümü bu taahhütleri içerir.
2.1.0 sürümünden bu yana yapılan önemli değişiklikler
- Yaşam döngüsü coroutine entegrasyonu: Yeni
lifecycle-runtime-ktx
yapı, yaşam döngüsü ile Kotlin coroutine'leri arasında entegrasyon sağlar.lifecycle-livedata-ktx
, iş parçacıklarından yararlanacak şekilde de genişletildi. Daha fazla bilgi için Kotlin eşzamanlı programlama yapılarını mimari bileşenleriyle kullanma başlıklı makaleyi inceleyin. ViewModelProviders.of()
desteği sonlandırıldı:ViewModelProviders.of()
desteği sonlandırıldı. Fragment1.2.0
'i kullanırken aynı işlevi elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
kurucusuna birFragment
veyaFragmentActivity
iletebilirsiniz.lifecycle-extensions
Öğesinin kullanımdan kaldırılması: Yukarıda belirtilenViewModelProviders.of()
'ın kullanımdan kaldırılmasıyla birlikte, bu sürümlifecycle-extensions
'daki son API'nin de kullanımdan kaldırıldığını işaret eder. Bu öğe artık tamamen kullanımdan kaldırılmış kabul edilmelidir.lifecycle-extensions
için gelecekte2.3.0
sürümü yayınlanmayacağından, ihtiyacınız olan belirli yaşam döngüsü yapılarına (ör.LifecycleService
kullanıyorsanızlifecycle-service
,ProcessLifecycleOwner
kullanıyorsanızlifecycle-process
) bağlı olaraklifecycle-extensions
yerine bu yapıları kullanmanızı önemle tavsiye ederiz.- Gradle Artımlı Ek Açıklama İşleyicisi: Yaşam döngüsü ek açıklama işleyicisi varsayılan olarak artımlıdır.
Uygulamanız Java 8 programlama dilinde yazılmışsa bunun yerine
DefautLifecycleObserver
, Java 7 programlama dilinde yazılmışsaLifecycleEventObserver
kullanabilirsiniz.
Sürüm 2.2.0-rc03
4 Aralık 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
yayınlanır. 2.2.0-rc03 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
ViewModelStore
içinde taklit edilmiş birViewModel
depolanıp daha sonra varsayılan fabrika ile sorgulandığında ortaya çıkan bir hata düzeltildi.launchWhenCreated
içindeDispatchers.Main.immediate
kullanımı ve ilgili yaşam döngüsü etkinliği sırasında eşzamanlı olarak çağrılacak benzer yöntemleri düzeltin. (aosp/1156203)
Harici katkılar
- Düzeltmeyle katkıda bulunan Anders Järleberg'e teşekkürler. (aosp/1156203)
- Satır içi yürütmeyle ilgili bir uygulamayı inceleyen Jetbrains'den Vsevolod Tolstopyatov'a teşekkürler.
Bağımlılık değişiklikleri
- Yaşam döngüsü uzantıları artık
1.2.0-rc03
Fragment'ine bağlıdır.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
yayınlanır. 2.2.0-rc02 sürümü bu taahhütleri 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ınlanır. 2.2.0-rc01 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
launchWhenCreated
ve ilgili yöntemlerin,Dispatchers.Main.immediate
yerineDispatchers.Main
kullanması nedeniyle ilişkili yaşam döngüsü yönteminden bir kare geç çalıştırılması sorunu düzeltildi. (aosp/1145596)
Harici katkılar
- Düzeltmeyi sağlayan 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ınlanır. 2.2.0-beta01 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Lifecycle 2.2.0-alpha05'te
ProcessLifecycleOwner
'nin sıralamasında ve etkinliğinLifecycleOwner
'ının Android 10 cihazlarda başlatıldı ve devam ettirilmeye geçirilmesinde ortaya çıkan bir gerileme düzeltildi. (aosp/1128132) lifecycle-process
'nin2.0.0
veya2.1.0
sürümü kullanılırkenNullPointerException
'a neden olan, Yaşam Döngüsü2.2.0-alpha05
'te tanıtılan bir gerileme düzeltildi. (b/141536990)
Sürüm 2.2.0-alpha05
18 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
yayınlanır. 2.2.0-alpha05 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- İş parçacıklı canlı veri oluşturucuda bir yarış koşulu düzeltildi. b/140249349
Sürüm 2.2.0-alpha04
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
veliveData
'in temel uygulaması artıkDispatchers.Main
yerineDispatchers.Main.immediate
kullanıyor. (b/139740492)
Harici katkılar
Dispatchers.Main.immediate
'e geçişe katkıda bulunan Nicklas Ansman'a teşekkürler. (aosp/1106073)
Sürüm 2.2.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
ViewModelStoreOwner
uygulamalarında artık isteğe bağlı olarakHasDefaultViewModelProviderFactory
uygulanarak varsayılan birViewModelProvider.Factory
sağlanabilir. Bu işlem Etkinlik1.1.0-alpha02
, Parça1.2.0-alpha02
ve Gezinme2.2.0-alpha01
için yapılmıştır. (aosp/1092370, b/135716331)
API değişiklikleri
ViewModelProviders.of()
desteği sonlandırıldı. Aynı işlevi elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
kurucusuna birFragment
veyaFragmentActivity
iletebilirsiniz. (aosp/1009889)
Sürüm 2.2.0-alpha02
2 Temmuz 2019
androidx.lifecycle:*:2.2.0-alpha02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
API değişiklikleri
LiveDataScope.initialValue
,liveData
bloğunun mevcut yayınlanan değerini izleyenLiveDataScope.latestValue
ile değiştirildi.liveData
oluşturucuya,timeout
parametresiniDuration
türü olarak 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ınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Bu sürümde, Lifecycle ve LiveData için Kotlin coroutine'lerine destek sağlayan yeni özellikler eklendi. Bu özelliklerle ilgili ayrıntılı dokümanları burada bulabilirsiniz.
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ınlanır. 1.0.0 sürümü bu taahhütleri içerir.
1.0.0 sürümündeki önemli özellikler
- Yeni SavedStateHandle sınıfı eklendi.
ViewModel
sınıflarınızın kayıtlı duruma erişmesine ve bu duruma katkıda bulunmasına olanak tanır. Bu nesne,ViewModel
sınıfının kurucusuna ve Fragments tarafından varsayılan olarak sağlanan fabrikalara alınabilir. AppCompatActivity,SavedStateHandle
öğesini otomatik olarak ekler. - AbstractSavedStateViewModelFactory eklendi.
ViewModel
için özel fabrikalar oluşturmanıza ve bu fabrikalaraSavedStateHandle
'a erişim izni vermenize olanak tanır.
ViewModel-Savedstate Sürümü 1.0.0-rc03
4 Aralık 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
yayınlanır. 1.0.0-rc03 sürümü bu taahhütleri içerir.
Bağımlılık değişiklikleri
- Yaşam döngüsü ViewModel SavedState artık yaşam döngüsü
2.2.0-rc03
'e bağlıdır.
Viewmodel-Savedstate Sürümü 1.0.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
yayınlanır. 1.0.0-rc02 sürümü bu taahhütleri içerir.
Bağımlılık değişiklikleri
- Artık yaşam döngüsüne bağlıdır
2.2.0-rc02
.
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
ile aynı şekilde yayınlanır. 1.0.0-rc01 sürümü bu taahhütleri içerir.
ViewModel-Savedstate Sürümü 1.0.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
yayınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
Activity.onActivityResult()
sürümünde SavedState ViewModel'e ilk kez erişildiğindeIllegalStateException
ile sonuçlanan sorun düzeltildi. (b/139093676)AbstractSavedStateViewModelFactory
kullanılırken yaşanan birIllegalStateException
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ınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.
API değişiklikleri
SavedStateViewModelFactory
artıkAbstractSavedStateViewModelFactory
'yi genişletmiyor veSavedStateHandle
yalnızca bunu isteyen ViewModel'ler için oluşturuluyor (aosp/1113593)
ViewModel-SavedState Sürüm 1.0.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Zararlı Değişiklikler
lifecycle-viewmodel-savedstate
artıkfragment
'a bağlı değil ve ilgiliSavedStateViewModelFactory(Fragment)
veSavedStateViewModelFactory(FragmentActivity)
kurucuları kaldırıldı. Bunun yerineSavedStateViewModelFactory
, artık Etkinlik1.1.0-alpha02
, Parça1.2.0-alpha02
ve Gezinme2.2.0-alpha01
için varsayılan fabrikadır. (b/135716331)
ViewModel-SavedState Sürümü 1.0.0-alpha02
2 Temmuz 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Varsayılan değer kabul eden
SavedStateHandle.getLiveData()
aşırı yükleme işlevi 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ınlanır. Bu ilk sürümün tam taahhüt günlüğünü burada bulabilirsiniz.
Yeni özellikler
- Artık
ViewModels
, savedstate özelliğine katkıda bulunabilir. Bunun için yeni kullanıma sunulan görünüm modelinin fabrikasınıSavedStateVMFactory
kullanırsınız ve ViewModel'inizde parametre olarakSavedStateHandle
nesnesi alan bir kurucu olmalıdır.
2.1.0 sürümü
2.0.0 sürümünden beri yapılan önemli değişiklikler
- Yaşam döngüsü etkinlikleri akışının gerekli olduğu durumlar için
LifecycleEventObserver
eklendi. Gizli birGenericLifecycleObserver
sınıfı yerine herkese açık bir API'dir. LiveData.observe
yöntemleri veTransformations.*
yöntemleri için ktx uzantıları eklendi.- Kaynak
LiveData
değeri değiştirilene kadar değer yayınlamayan yeni bir LiveData nesnesi oluşturanTransformations.distinctUntilChanged
eklendi. ViewModel.viewModelScope
uzantı mülkü eklenerek ViewModel'lere coroutine desteği eklendi.
2.1.0 sürümü
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.1.0
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Sürüm 2.1.0-rc01
2 Temmuz 2019
androidx.lifecycle:*:2.1.0-rc01
, androidx.lifecycle:*:2.1.0-beta01
ile aynı şekilde yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.lifecycle:*:2.1.0-beta01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Yaşam döngüleri beta sürümüne geçirildi: Önceki alfa sürümlerinde kullanıma sunulan
liveData
dönüşümler ve gözlemler için uzantı işlevleri,ViewModel
mülk yetkilendirmesi ile başlatma gibi API'ler kararlı hale getirildi ve değiştirilmeyecek.
Sürüm 2.1.0-alpha04
3 Nisan 2019
androidx.lifecycle:*:2.1.0-alpha04
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
API değişiklikleri
- Temel değişiklik:
by viewModels()
veby activityViewModels()
'un temel API'si, yalnızcaViewModelStoreOwner
yerine doğrudanViewModelStore
'yi destekleyecek şekilde değiştirildi. (aosp/932932)
Sürüm 2.1.0-alpha03
13 Mart 2019
androidx.lifecycle:*:2.1.0-alpha03
yayınlanır. Bu sürüme dahil edilen tüm taahhütlerin tam listesini burada bulabilirsiniz.
API değişiklikleri
ViewModelProvider.KeyedFactory
kaldırıldı.ViewModelProvider.Factory
'e ek olarak ikinci arayüz, Kotlinby viewmodels {}
'te mülk yetkilendirmesi gibi yeni özelliklerle iyi bir şekilde uyumlu değildi. (aosp/914133)
Sürüm 2.1.0-alpha02
30 Ocak 2019
androidx.lifecycle 2.1.0-alpha02
yayınlanır.
API değişiklikleri
LifecycleRegistry
artık desteği sonlandırılansetState()
yönteminin yerini alan birsetCurrentState()
yöntemi içeriyor. (aosp/880715)
Hata düzeltmeleri
- İçerdiği
ViewModelStore
temizlendiğinde sahteViewModel
örneklerinin kilitlenmesine neden olan sorun düzeltildi. b/122273087
Sürüm 2.1.0-alpha01
17 Aralık 2018
androidx.lifecycle 2.1.0-alpha01
yayınlanır.
Yeni özellikler
- Yaşam döngüsü etkinlikleri akışının gerekli olduğu durumlar için
LifecycleEventObserver
eklendi. Gizli birGenericLifecycleObserver
sınıfı yerine herkese açık bir API'dir. LiveData.observe
yöntemleri veTransformations.*
yöntemleri için ktx uzantıları eklendi.Transformations.distinctUntilChanged
yöntemi eklendi. Kaynak LiveData değeri değiştirilene kadar değer yayınlamayan yeni birLiveData
nesnesi oluşturur.- ViewModel'lerde coroutine desteği:
ViewModel.viewModelScope
uzantı özelliği eklendi. create
yöntemindekey
veClass
alan ViewModels için bir fabrika olanViewModelProvider.KeyedFactory
eklendi.
Sürüm 2.0.0
Sürüm 2.0.0
21 Eylül 2018
Yaşam döngüsü 2.0.0
, ViewModel'deki 2.0.0-rc01
'ten alınan bir hata düzeltmesiyle yayınlandı.
Hata Düzeltmeleri
- Oluşturucuları yanlış bir şekilde kaldıran bir ViewModel proguard kuralı düzeltildi b/112230489
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- LifecycleObserver proguard kuralı, alt arayüzleri değil yalnızca uygulamaları koruyacak şekilde düzeltildi b/71389427
- Kod karartma ve küçültmeye izin vermek için ViewModel proguard kuralları düzeltildi
AndroidX öncesi sürümler
Aşağıdaki Lifecycle'in AndroidX öncesi sürümleri için aşağıdaki 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"
}
1.1.1 sürümü
21 Mart 2018
Yalnızca bir küçük değişiklik: android.arch.core.util.Function
, arch:runtime
konumundan arch:common
konumuna taşındı. Bu, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common
'te) kullanılmasına olanak tanır.
lifecycle:common
, lifecycle:runtime
'un bir bağımlılığı olduğundan bu değişiklik lifecycle:runtime
'u doğrudan etkilemez. Yalnızca Paging gibi doğrudan lifecycle:common
'e bağlı olan modülleri etkiler.
Sürüm 1.1.0
22 Ocak 2018
Paketleme Değişiklikleri
Artık çok daha küçük yeni bağımlılıklar mevcuttur:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API Değişiklikleri
- Desteği sonlandırılan
LifecycleActivity
veLifecycleFragment
artık kaldırıldı. LütfenFragmentActivity
,AppCompatActivity
veyaFragment
desteğini kullanın. @NonNull
ek açıklamasıViewModelProviders
veViewModelStores
dosyalarına eklendiViewModelProviders
kurucusunun desteği sonlandırıldı. Lütfen doğrudan statik yöntemlerini kullanınViewModelProviders.DefaultFactory
desteği sonlandırıldı. LütfenViewModelProvider.AndroidViewModelFactory
'u kullanın.ViewModel
veAndroidViewModel
örnekleri oluşturmaya uygun bir statikFactory
almak için statikViewModelProvider.AndroidViewModelFactory.getInstance(Application)
yöntemi eklendi.