Yaşam döngüsü
Bu tabloda, androidx.lifecycle
grubundaki tüm yapılar listelenir.
Yapı | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
lifecycle-* | 2.9.1 | - | - | - |
lifecycle-viewmodel-navigation3 | - | - | - | 1.0.0-alpha03 |
Bağımlılıkları bildirme
Lifecycle'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.1" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.1" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.1" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.1" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Lifecycle ViewModel Navigation3 Version 1.0.0
Sürüm 1.0.0-alpha03
2 Temmuz 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
ve androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
yayınlandı. Sürüm 1.0.0-alpha03, bu commit'leri içerir.
Bağımlılık Değişiklikleri
- Lifecycle ViewModel Navigation 3 artık Navigation3 Alpha05'e bağlı
Sürüm 1.0.0-alpha02
18 Haziran 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
ve androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu commit'leri içerir.
Bağımlılık Güncellemeleri
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
, Navigation31.0.0-alpha04
'teki değişikliklere bağlıdır. (Icd0fd, b/420991203)
Sürüm 1.0.0-alpha01
23 Mayıs 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
iptal edilir. 1.0.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
- Lifecycle ViewModel Navigation3,
ViewModels
ile entegrasyon sağlamak için Navigation3 ile birlikte oluşturulan yeni bir kitaplıktır.androidx.lifecycle:lifecycle-viewmodel-navigation3
yapısı, herNavEntry
içeriğine benzersiz birViewModelStoreOwner
sağlayanViewModelStoreNavEntryDecorator
öğesini sunar. Ayrıca, yapılandırıcıların yapılandırma değişiklikleriyle düzgün şekilde işlenmesini sağlamak için birrememberViewModelStoreNavEntryDecorator()
sağlar.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
Sürüm 2.9
Sürüm 2.9.1
4 Haziran 2025
androidx.lifecycle:lifecycle-*:2.9.1
iptal edilir. 2.9.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
SavedStateHandle.remove(key)
durumlarının temizlenmemesiSavedStateHandle.getMutableStateFlow(key)
sorununu düzeltir. (d5f939, b/418746333)
Sürüm 2.9.0
7 Mayıs 2025
androidx.lifecycle:lifecycle-*:2.9.0
iptal edilir. 2.9.0 sürümü bu commit'leri içerir.
2.8.0 sürümünden beri yapılan önemli değişiklikler
androidx.lifecycle:lifecycle-viewmodel-testing
KMP yapay nesnesi,ViewModels
'yi bağımsız olarak test etmek içinViewModelScenario
sınıfı sağlar. Ayrıca,onCleared
veSavedStateHandle
desteğinin yanı sırarecreate()
aracılığıyla işlem sonlandırma ve yeniden oluşturma testini de içerir.MutableStateFlow
iade etmek içingetMutableStateFlow
öğesiniSavedStateHandle
öğesine ekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir vegetLiveData
ile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur.CreationExtras
artık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor.in
,+=
ve+
özelliklerininCreationExtras
ile birlikte kullanılmasına olanak tanır.
KotlinX Serialization Support
SavedState
1.3.0
'e eklenen KotlinX Serialization desteğiyle birlikte,@Serializable
sınıflarınıSavedStateHandle
içinde kolayca depolamak ve bu sınıfların işlem sonlandırılıp yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlamak içinsaved
adlı tembel özellik temsilcisini kullanıma sunduk.saved
temsilcisinin tembel olduğunu ve erişilene kadarinit
lambda'sını çağırmayacağını veyaSavedStateHandle
içine hiçbir şey kaydetmeyeceğini lütfen unutmayın.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
lifecycle-testing
modülü artıkTestLifecycleOwner
gibi API'ler de dahil olmak üzere KMP ile uyumlu.lifecycle-viewmodel-savedstate
modülü artıkSavedStateHandle
gibi API'ler de dahil olmak üzere KMP ile uyumlu.androidx.compose.ui.platform.LocalLifecycleOwner
artık ortak kaynak kümesinde kullanılabilir.NewInstanceFactory
artık JVM Desktop ve Android hedeflerinde kullanılabilir.
Davranış Değişiklikleri
Lifecycle.DESTROYED
durumu son durumdur ve artıkLifecycle
öğesini bu durumdan başka bir duruma taşımaya yönelik tüm girişimlerIllegalStateException
ile sonuçlanır.SavedStateHandle
artık döndürülenBundle
'nin boş olduğuSavedStateProvider.saveState()
'yi içermiyor.
Sürüm 2.9.0-rc01
23 Nisan 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01
iptal edilir. 2.9.0-rc01 sürümü bu commit'leri içerir.
Sürüm 2.9.0-beta01
9 Nisan 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01
iptal edilir. 2.9.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
Lifecycle ViewModel Compose
artık Compose Runtime 1.7.1 ve sonraki sürümlerle aynı Kotlin Multiplatform kurulumunu kullanıyor.-desktop
yapıları kaldırıldı,-jvmStubs
ve-linuxx64Stubs
yapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar. (I5cb14, b/406592090)
Bağımlılık Güncellemeleri
- Bu kitaplık artık Kotlin 2.0 dil seviyesini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)
Lifecycle ViewModel Compose
artık Compose 1.7.8'e bağlıdır. (I5cb14, b/406592090)
Sürüm 2.9.0-alpha13
26 Mart 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13
, önemli bir herkese açık değişiklik olmadan yayınlandı. 2.9.0-alpha13 sürümü bu commit'leri içerir.
Sürüm 2.9.0-alpha12
12 Mart 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12
iptal edilir. 2.9.0-alpha12 sürümü bu commit'leri içerir.
API Değişiklikleri
- Desteklenen tüm KMP platformlarında
ViewModelProvider.get
öğesine@MainThread
ek açıklaması ekleyin. (I7e8dd, b/397736115) SavedState*Delegates
öğesiniSavedState*Delegate
olarak yeniden adlandırın. (I8589b, b/399629301)
Sürüm 2.9.0-alpha11
26 Şubat 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11
iptal edilir. 2.9.0-alpha11 sürümü bu commit'leri içerir.
API Değişiklikleri
SavedStateConfig
parametresinisaved()
temsilcilerine ekleyin (I39b3a)
Sürüm 2.9.0-alpha10
12 Şubat 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10
iptal edilir. 2.9.0-alpha10 sürümü bu commit'leri içerir.
API Değişiklikleri
MutableStateSerializer
tutarındaki bütçeyilifecycle-viewmodel-compose
kampanyasındansavedstate-compose
kampanyasına taşıyın. (I4f690, b/378895074)
Harici Katkı (External Contribution)
Lifecycle::currentState
işlevinin bileşimde çağrılmasıyla ilgili yeni bir Lint sorunu ekler. Bunun yerine, Yaşam Döngüsü durumundaki değişikliklerin yeniden oluşturmaya doğru şekilde neden olmasını sağlamak içincurrentStateAsalue().value
işlevinin kullanılmasını önerir. Teşekkürler Steven Schoen! (Iad484)
Sürüm 2.9.0-alpha09
29 Ocak 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09
iptal edilir. 2.9.0-alpha09 sürümü bu commit'leri içerir.
Yeni Özellikler
androidx.compose.runtime.MutableState
öğesini serileştirmek içinMutableStateSerializer
ekleyin. (Idfc48, b/378895074)
API Değişiklikleri
- Aşırı yüklenmiş
SavedStateHandle.saved()
temsilci işlevlerini varsayılan parametrelerle değiştirme (Icd1c1) AbstractSavedStateViewModelFactory
, herViewModel
için birSavedStateHandle
oluşturarak gereksiz ek yük oluşturduğu için kullanımdan kaldırılmıştır. Daha verimliViewModel
oluşturma içinViewModelProvider.Factory
ile birlikteCreationExtras.createSavedStateHandle
kullanın. (Ia920b, b/388590327)
Sürüm 2.9.0-alpha08
11 Aralık 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
iptal edilir. 2.9.0-alpha08 sürümü bu commit'leri içerir.
Yeni Özellikler
- Test edilen
ViewModel
ve ilişkili tüm bileşenleri yeniden oluşturarak bir Sistem İşlemi Ölümü 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 bağlantısız üst öğeleri (ör.ViewOverlay
) üzerinden çözümlenebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için Core'un sürüm notlarına veyaViewTree.setViewTreeDisjointParent
bölümündeki dokümanlara bakın. (I800f4)
API Değişiklikleri
- Adlandırmaları ve paket düzenini
SavedStateRegistryOwnerDelegate
ile daha tutarlı hale getirin (I8c135, b/376026744)
Hata Düzeltmeleri
- Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır:
-Xjspecify-annotations=strict
(bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (Ie4340, b/326456246) - Doküman
ViewModel.onCleared
temizleme sırası. (I586c7, b/363984116)
Sürüm 2.9.0-alpha07
13 Kasım 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07
iptal edilir. 2.9.0-alpha07 sürümü bu commit'leri içerir.
Kotlin Multiplatform Uyumluluğu
- Lifecycle
ViewModel SavedState
artık KMP ile uyumlu. Bu,SavedStateHandle
'ı ortak kodda kullanmanıza olanak tanır. (Ib6394, b/334076622)
KotlinX Serialization Support
SavedState
1.3.0-alpha05
'e eklenen KotlinX Serialization desteğiyle birlikte,@Serializable
sınıflarınıSavedStateHandle
içinde kolayca depolamak ve bu sınıfların işlem sonlandırılıp yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlamak içinsaved
adlı tembel özellik temsilcisini kullanıma sunduk.saved
temsilcisinin tembel olduğunu ve erişilene kadarinit
lambda'sını çağırmayacağını veyaSavedStateHandle
içine hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
API Değişiklikleri
MutableStateFlow
iade etmek içingetMutableStateFlow
öğesiniSavedStateHandle
öğesine ekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir vegetLiveData
ile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur. (I04a4f, b/375408415)
Sürüm 2.9.0-alpha06
30 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06
iptal edilir. 2.9.0-alpha06 sürümü bu commit'leri içerir.
Davranış Değişiklikleri
Lifecycle.DESTROYED
durumu son durumdur ve artıkLifecycle
öğesini bu durumdan başka bir duruma taşımaya yönelik tüm girişimlerIllegalStateException
ile sonuçlanır. (I116c4, b/370577987)SavedStateHandle
artık döndürülenBundle
'nin boş olduğuSavedStateProvider.saveState()
'yi içermiyor. (I910b5, b/370577987)
Hata Düzeltmeleri
Lifecycle.eventFlow
,Lifecycle
değeriDESTROYED
olduğunda artık doğru şekilde tamamlanıyor (I293b2, b/374043130)
Sürüm 2.9.0-alpha05
16 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
sürümünde önemli bir değişiklik yok. 2.9.0-alpha05 sürümü bu commit'leri içerir.
Sürüm 2.9.0-alpha04
2 Ekim 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04
iptal edilir. 2.9.0-alpha04 sürümü bu commit'leri içerir.
Kotlin Multiplatform
lifecycle-viewmodel-savedstate
modülü,SavedStateHandle
gibi API'lerin gelecekteki bir sürümde ortak kaynak grubunda kullanıma sunulmasına hazırlık olarak artık KMP ile uyumlu olacak şekilde yapılandırıldı. (I503ed, I48764, b/334076622)
Sürüm 2.9.0-alpha03
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
iptal edilir. 2.9.0-alpha03 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle
2.8.6
:NullSafeMutableLiveData
Lint hatası, akıllı yayınlar için daha iyi destek sunarak yanlış pozitifleri önler. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Yaşam Döngüsü
2.8.6
: Lifecycle Runtime Compose artık Compose Runtime1.7.1
'a bağlıdır. - Lifecycle Runtime artık ProfileInstaller
1.4.0
'a bağlıdır.
Sürüm 2.9.0-alpha02
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
iptal edilir. 2.9.0-alpha02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yaşam döngüsü
2.8.5
bölümünde:androidx.lifecycle.ReportFragment
ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı (External Contribution)
androidx.compose.ui.platform.LocalLifecycleOwner
öğesini ortak kaynak kümesine (KMP) taşıyın. Katkısı için JetBrains'ten Ivan Matkov'a teşekkür ederiz. (8cd5d03)- Yaşam döngüsü
2.8.5
: SavedStateHandle.saveable` uzantı temsilcisi artık null değerleri destekliyor. Katkısı için Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)
Sürüm 2.9.0-alpha01
7 Ağustos 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
iptal edilir. 2.9.0-alpha01 sürümü bu commit'leri içerir.
Kotlin Multiplatform
lifecycle-testing
artık KMP ile uyumlu. (Iea41e)linuxArm64
Kotlin çok platformlu hedefi için destek ekleyin (I139d3, b/338268719)
Yeni Özellikler
- ViewModel'leri yalıtılmış şekilde test etmek için
androidx.lifecycle:lifecycle-viewmodel-testing
sınıfı sağlayan yeni birViewModelScenario
KMP yapısı kullanıma sunuldu. Bu yapı,onCleared
(tüm platformlar) veSavedStateHandle
(yalnızca Android) desteği sunar. (337f68d, c9b3409, 9799a95c, b/264602919) ViewModelProvider
ileViewModel
oluşturma artık iş parçacığı açısından güvenli.@MainThread
ek açıklamaları kaldırıldı. (Ifd978, b/237006831)
API Değişiklikleri
- Anonim
CreationExtras.Key
nesnelerin oluşturulmasını kolaylaştırmak içinCreationExtras.Key()
fabrika işlevini ekleyin. (I970ee) CreationExtras
artık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor.in
,+=
ve+
özelliklerininCreationExtras
ile birlikte kullanılmasına olanak tanır. (Ib4353)CreationExtras
artıkequals
,hashCode
vetoString
yöntemlerini uyguluyor. (Ib4353)NewInstanceFactory
artık JVM Desktop ve Android hedeflerinde kullanılabilir. (d3d0892)- Kotlin dilinin 2.0 sürümünde (I39df2) temel alınan uygulamayı güvenli bir şekilde kullanıma sunmak için satır içi uzantı özelliği
Hata Düzeltmeleri
- AGP 7.3 veya sonraki sürümleriyle (ör. R8 sürümü 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümleriyle (ör. D8 sürümü 8.1) tüm derlemeler için yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması, API modelleme aracılığıyla otomatik olarak yapıldığından kaldırıldı. AGP kullanmayan müşterilerin D8 sürüm 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
iptal edilir. 2.8.7 sürümü bu commit'leri 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ı,-jvmStubs
ve-linuxx64Stubs
yapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar. (6a3f5b3)
Sürüm 2.8.6
18 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.6
iptal edilir. 2.8.6 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveData
Lint hatası, akıllı yayınlar için daha iyi destek sunarak yanlış pozitif sonuçları önler. (85fed6, b/181042665)
Bağımlılık Güncellemeleri
- Lifecycle Runtime Compose artık Compose Runtime
1.7.1
'a bağlıdır.
Sürüm 2.8.5
4 Eylül 2024
androidx.lifecycle:lifecycle-*:2.8.5
iptal edilir. 2.8.5 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
androidx.lifecycle.ReportFragment
ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)
Harici Katkı (External Contribution)
SavedStateHandle.saveable
uzantı temsilcisi artık boş değerleri destekliyor. Katkısı için Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)
Sürüm 2.8.4
24 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.4
iptal edilir. 2.8.4 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
LiveData.asFlow()
artık, döndürülen Flow'unLiveData
üzerinde önceden ayarlanmış bir değer alındıktan hemen sonra tamamlandığı durumları (örneğin,take(1)
kullanılırken) doğru şekilde işliyor. (I9c566)Lifecycle*Effect
tamamlama işlemi artık idempotent (yanionStopOrDispose
, Lifecycle durdurulduğu için çağrıldıysa Lifecycle tekrarSTARTED
durumuna dönmediği sürece elden çıkarma sırasında ikinci kez çağrılmaz) (I5f607, b/352364595)
Sürüm 2.8.3
1 Temmuz 2024
androidx.lifecycle:lifecycle-*:2.8.3
iptal edilir. 2.8.3 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Kod küçültme kullanılırken Lifecycle 2.8'in Compose 1.6.0 ve önceki sürümlerle geriye dönük uyumluluğuyla ilgili sorun düzeltildi. (aosp/3133056, b/346808608)
Sürüm 2.8.2
12 Haziran 2024
androidx.lifecycle:lifecycle-*:2.8.2
iptal edilir. 2.8.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle 2.8.X'i Compose 1.6.X veya daha eski bir sürümle kullanırken oluşan
CompositionLocal LocalLifecycleOwner not present
hataları düzeltildi. Artık Lifecycle 2.8.2'yi Compose'un herhangi bir sürümüyle geçici çözümler kullanmadan kullanabilirsiniz. (aosp/3105647, b/336842920) ViewModelProvider
Yaşam döngüsü bağımlılıklarının önceki sürümleri 2.8 ve sonraki sürümlerle karıştırıldığındaViewModelProvider
artık kilitlenmeyecek. Bu sayede LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltilecek.compileOnly
(I80383, b/341792251)
Sürüm 2.8.1
29 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.1
iptal edilir. 2.8.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
lifecycle-viewmodel-compose
artık yalnızcacompose-runtime
ile ortak bağımlılığa sahip vecompose-ui
ile ortak bağımlılığı kaldırıldı. Android yapısı, uyumluluk içincompose-ui
özelliğini korur. (aosp/3079334, b/339562627)ViewModel
'nınsaveable
entegrasyonu, özellik temsilcilerini kullanarak artık otomatik olarak oluşturulan anahtarın bir parçası olarak sınıf adını kullanıyor. Böylece, birden fazla sınıf aynıSavedStateHandle
'ı kullandığında çakışmalar önleniyor. (aosp/3063463)
Sürüm 2.8.0
14 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0
iptal edilir. 2.8.0 sürümü bu commit'leri içerir.
2.7.0 sürümünden beri yapılan önemli değişiklikler
LocalLifecycleOwner
, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzü dışında kullanılabilmesi için Compose kullanıcı arayüzündenlifecycle-runtime-compose
'e taşındı.lifecycle-runtime-compose
yapısı artıkdropUnlessResumed
vedropUnlessStarted
API'lerini içeriyor. Bu API'ler,LifecycleOwner
değeri belirtilenLifecycle.State
değerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile birlikte kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi veSupervisorJob()
öğenizi ekleyebilir veyarunTest
içinde bulunanbackgroundScope
öğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
ViewModel
, Kotlin'de yeniden yazıldı ve artıkCloseable
yerineAutoClosable
kullanılıyor. ArtıkAutoCloseable
nesneleri eklemeyi destekliyor. Bu nesneler,getCloseable()
üzerinden alınmalarını sağlayan birkey
ile birlikte gelir.LifecycleStartEffect
veLifecycleResumeEffect
API'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığıDisposableEffect
API ile aynı kural geçerlidir.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
yerineLiveData.toPublisher(lifecycleOwner)
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 düzenlendi.
Lifecycle Kotlin Multiplatform Uyumluluğu
Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
ve LifecycleRegistry
içindeki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor.
Etkilenen yapılar:
lifecycle-common
, çoğu API'yicommon
'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-runtime
, çoğu API'yicommon
'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-runtime-ktx
artık boş ve tüm API'lerlifecycle-runtime
'ye taşındı.lifecycle-runtime-compose
tüm API'lericommon
'ye taşır veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısı gönderir.
ViewModel Kotlin Multiplatform Uyumluluğu
lifecycle-viewmodel
yapısı ve ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda gönderiliyor.
Bu değişikliğe uyum sağlamak için ViewModelProvider
üzerindekiler gibi java.lang.Class<T>
alan yöntemlerin artık kotlin.reflect.KClass<T>
alan eşdeğer bir yöntemi var.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:
ViewModelProvider
örneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerineViewModelProvider.create()
yöntemleri aracılığıyla yapılır.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel Fabrikaların
ViewModelProvider.Factory
'dan genişletilmesi veCreationExtras
alancreate
yönteminin ya daviewModelFactory
Kotlin DSL'sinin kullanılması önerilir.
- Özel Fabrikaların
- JVM dışı platformlarda
ViewModelProvider
öğesini özel bir fabrika olmadan kullanmakUnsupportedOperationException
ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu kullanılarak uyumluluk korunur. viewModelScope
,Dispatchers.Main
'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext
Linux).
Etkilenen yapılar:
lifecycle-viewmodel
, çoğu API'yicommon
'ye taşır ve Android'e ek olarak jvm ile iOS'i destekler.lifecycle-viewmodel-ktx
artık boş ve tüm API'lerlifecycle-viewmodel
'ye taşındı.lifecycle-viewmodel-compose
tüm API'lericommon
'ye taşır veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısı gönderir.
Davranış Değişiklikleri
InitializerViewModelFactory
(viewModelFactory
oluşturucu işlevi dahil) artık aynıclazz: KClass<VM : ViewModel>
ile birinitializer
zaten eklenmişseIllegalArgumentException
hatası verecek. (Ic3a36)
Bilinen Sorunlar
lifecycle-*:2.8.0
için minimum Compose sürümü 1.7.0-alpha05 (b/336842920) gerekir.
Sürüm 2.8.0-rc01
1 Mayıs 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
iptal edilir. 2.8.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
lifecycle-common
sınıfları için temel profilin düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artıklifecycle-runtime
AAR'sında paketleniyor. (aosp/3038274, b/322382422)- ViewModel'e eklenen
AutoCloseable
örneklerinin temizlenmesinde istenmeden yapılan sıralama değişikliği düzeltildi. ÖnceaddCloseable(String, AutoCloseable)
, sonraaddClosable(AutoCloseable)
, sonraonCleared()
olan önceki sıralama geri yüklendi. (aosp/3041632) - Yerel ve JVM masaüstü ortamlarında
viewModelScope
için varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)
Harici Katkı (External Contribution)
- JVM Desktop'ta ana iş parçacığı kontrolünü iyileştirdiği için Victor Kropp'a teşekkür ederiz. (aosp/3037116)
Sürüm 2.8.0-beta01
17 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
iptal edilir. 2.8.0-beta01 sürümü bu commit'leri içerir.
Yeni Özellikler
lifecycle-runtime-compose
yapısı artık Kotlin Multiplatform ile uyumlu. Bu nedenle koducommon
'ye taşınıyor veandroidx.compose
için çok platformlu destekle eşleşen bir Android yapısı gönderiliyor. (If7a71, I4f4a0, b/331769623)
Sürüm 2.8.0-alpha04
3 Nisan 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
iptal edilir. 2.8.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
yapısı artık Kotlin Multiplatform ile uyumlu. Bu nedenle koducommon
'ye taşınıyor veandroidx.compose
'nin çok platformlu desteğine uygun bir Android yapısı gönderiliyor. Bu değişikliği karşılamak için ComposableviewModel
yöntemi artıkjava.lang.Class
'ye ek olarakKClass
de kabul ediyor. (b/330323282)
Hata Düzeltmeleri
NullSafeMutableLiveData
, birçok yanlış pozitif sonucu önlemek için yeniden düzenlendi. (I2d8c1, Iafb18, I03463, I7ecef)
Bağımlılık güncellemesi
lifecycle-viewmodel-compose
yapısı artık Compose 1.6.0'a bağlıdır.- Yaşam döngüsü artık Profile Installer 1.3.1'e bağlıdır.
Sürüm 2.8.0-alpha03
20 Mart 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
iptal edilir. 2.8.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
ViewModel.viewModelScope
artık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi veSupervisorJob()
öğenizi ekleyebilir veyarunTest
içinde bulunanbackgroundScope
öğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin Multiplatform Uyumluluğu
lifecycle-viewmodel
yapısı ve ViewModel
, ViewModelStore
, ViewModelStoreOwner
ve ViewModelProvider
gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda gönderiliyor. (b/214568825)
Bu değişikliğe uyum sağlamak için ViewModelProvider
üzerindekiler gibi java.lang.Class<T>
alan yöntemlerin artık kotlin.reflect.KClass<T>
alan eşdeğer bir yöntemi var.
Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:
ViewModelProvider
örneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerineViewModelProvider.create()
yöntemleri aracılığıyla yapılır.ViewModelProvider.NewInstanceFactory
veViewModelProvider.AndroidViewModelFactory
yalnızca Android'de kullanılabilir.- Özel Fabrikaların
ViewModelProvider.Factory
'dan genişletilmesi veCreationExtras
alancreate
yönteminin ya daviewModelFactory
Kotlin DSL'sinin kullanılması önerilir.
- Özel Fabrikaların
- JVM dışı platformlarda
ViewModelProvider
öğesini özel bir fabrika olmadan kullanmakUnsupportedOperationException
ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu 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>
ile birinitializer
zaten eklenmişseIllegalArgumentException
hatası verecek. (Ic3a36)
Hata Düzeltmeleri
ViewModel.getCloseable
artık yinelenen anahtarları işliyor:key
ile ilişkili birAutoCloseable
kaynağı varsa eski kaynak hemen değiştirilip kapatılıyor. (Ibeb67)ViewModel
öğesininviewModelScope
özelliğine erişim artık iş parçacığı açısından güvenli. (If4766, b/322407038)
Harici Katkı (External Contribution)
LocalLifecycleOwner
, Compose tabanlı yardımcı API'lerinin Compose UI dışında kullanılabilmesi için Compose UI'dan lifecycle-runtime-compose'a taşındı. Katkısı için Jake Wharton'a teşekkür ederiz. (I6c41b, b/328263448)
Sürüm 2.8.0-alpha02
21 Şubat 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
iptal edilir. 2.8.0-alpha02 sürümünde şu commit'ler yer alıyor.
Yeni Özellikler
dropUnlessResumed
vedropUnlessStarted
API'leri eklendi. Bu API'ler,LifecycleOwner
değeri verilenLifecycle.State
değerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile kullanılabilir:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin Dönüşümleri
ViewModel
artık Kotlin ile yazılıyor (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 Multiplatform Uyumluluğu
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
veLifecycleRegistry
içindeki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor. (b/317249252)
API Değişiklikleri
LifecycleStartEffect
veLifecycleResumeEffect
API'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığıDisposableEffect
API ile aynı kural geçerlidir. (Ib0e0c, b/323518079)ViewModel
artıkCloseable
yerineAutoCloseable
kullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
yerineLiveData.toPublisher(lifecycleOwner)
kullanımdan kaldırıldı. (Iabe29, b/262623005)
Harici Katkı (External Contribution)
- Lifecycle'ı Kotlin Multiplatform'a taşımamıza yardımcı olan Jetbrains'ten Ivan Matkov'a teşekkür ederiz. (aosp/2926690, I0c5ac, If445d)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
iptal edilir. 2.8.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
ViewModel
artıkCloseable
nesnelerininkey
ile eklenmesini destekliyor. Bu sayede nesnelergetCloseable()
üzerinden alınabiliyor. (I3cf63)
Sürüm 2.7
Sürüm 2.7.0
10 Ocak 2024
androidx.lifecycle:lifecycle-*:2.7.0
iptal edilir. 2.7.0 sürümü şu commit'leri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
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. Özellikle,currentState
özelliğini doğrudan ayarlamaktan farklı olarak bu işlemderunBlocking
kullanılmaz. Bu nedenle,runTest
tarafından sağlananlar gibi bir coroutine içinde güvenle kullanılabilir.map
veswitchMap
uzantılarıLiveData
artıkdistinctUntilChanged
davranışını yansıtıyor.LiveData
'davalue
ayarlanmışsamap
/switchMap
işlevi, döndürülenLiveData
'nınvalue
değerini doldurmak için hemen çağrılır. Bu, ilk değerin ilk bileşimde (observeAsState()
ile kullanıldığında) ayarlanmasını sağlar ancak gözlem davranışını değiştirmez. KaynaktakiLiveData
değerleri,LiveData
gözlemlenmeye başlandıktan sonra uygulanır.- Bu sürümde, işlem sonlandırılıp yeniden oluşturulduktan sonra
SavedStateHandle
'nın özelParcelable
sınıflarını düzgün şekilde geri yüklememesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde türü belirlenmiş bir dizi manuel olarak oluşturulur) veget
,getLiveData
vegetStateFlow
ile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir. LifecycleObserver
ile ilişkili proguard keep kuralları kaldırıldı. Bu, yansıtma yoluyla API'leri kullanmak isteyen (ör. uzun süredir kullanımdan kaldırılmış@OnLifecycleEvent
ek açıklamasını kullanmak) ProGuard ile korunmuş kodun, kendi 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
kullanmak yerine artıkLifecycle.asFlow()
uzantı yöntemiyleLifecycle.Event
Flow
izleyebilirsiniz.- Jetpack Compose kullanıcıları artık
LifecycleEventEffect
kullanarakLifecycle.Event
tabanlı Compose yan etkilerini çalıştırabilir.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose kullanıcıları, sırasıyla başlatılan ve durdurulan, devam ettirilen ve duraklatılan etkinlik çiftlerini işlemek için
LifecycleStartEffect
veLifecycleResumeEffect
işlevlerini kullanabilir. Bu API,DisposableEffect
içinde bulunan API'nin bir kopyasıdır ve durum yükselirken yapılan değişikliğin geri düşerken tersine çevrilmesi 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
değeri artıkLifecycle.currentStateFlow
özelliği aracılığıyla gözlemlenebilir. Bu özellik,value
değerinin mevcutLifecycle.State
olduğu birStateFlow
döndürür. - Jetpack Compose kullanıcıları,
Lifecycle.currentStateAsState()
uzantısını kullanarakLifecycle.State
öğesini doğrudan ComposeState
olarak kullanabilir. Bu,lifecycle.currentStateFlow.collectAsState()
ile eşdeğerdir (ve daha kısa bir alternatiftir).
Daha fazla bilgi için Yaşam döngüsü durumunu akışlarla toplama başlıklı makaleyi inceleyin.
Sürüm 2.7.0-rc02
13 Aralık 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
iptal edilir. 2.7.0-rc02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
SavedStateHandle
işlemin sonlandırılıp yeniden oluşturulmasından sonra özelParcelable
sınıflarının düzgün şekilde geri yüklenmemesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde türü belirlenmiş bir dizi manuel olarak oluşturulur) veget
,getLiveData
vegetStateFlow
ile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir. (I0b55a)
Sürüm 2.7.0-rc01
15 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
iptal edilir. 2.7.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LifecycleStartEffect
veLifecycleResumeEffect
,LifecycleOwner
değiştirilirse artık efekt bloğunu doğru şekilde kaldırıp yeniden oluşturuyor. (Ia25c6)
Sürüm 2.7.0-beta01
1 Kasım 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01
, herhangi bir değişiklik yapılmadan yayınlanır. 2.7.0-beta01 sürümü şu commit'leri içerir.
- Beta sürümünde güncelleme yapıldı. Bu sürümde önemli bir değişiklik yapılmadı.
Sürüm 2.7.0-alpha03
18 Ekim 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
iptal edilir. 2.7.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
lifecycle-runtime-testing
artık eşzamanlı rutin içindecurrentState
alanı kullanılırkenTestLifecycleOwner
öğesininLifecycle.State
ayarlanmasını önlemek için yeni bir Lint kontrolü içeriyor. Lint kontrolü artıksetCurrentState
öğesinin askıya alınmasını öneriyor. Bu sayedeLifecycle.State
öğesi engellenmeden ayarlanabiliyor. (Icf728, b/297880630)
Hata Düzeltmeleri
- Hem ilk çağrıda hem de sonraki bir çağrıda aynı
LiveData.switchMap
örneğinin döndürülmesinin,LiveData.switchMap
örneğinin kaynak olarak eklenmesini engellemesine neden olan sorun düzeltildi.LiveData
LiveData
(Ibedcba7)
Sürüm 2.7.0-alpha02
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
iptal edilir. 2.7.0-alpha02 sürümünde şu commit'ler yer alıyor.
Yeni Özellikler
TestLifecycleOwner
artık, kullanıcılarınrunTest
tarafından sağlananlar gibi bir eşzamanlılık rutini içindenTestLifecycleOwner
kullanma seçeneği sunmak için askıya alma işlevinisetCurrentState()
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ı, öncekiLiveData
için bir değer ayarlanmışsa döndürülenLiveData
öğesininvalue
değerini ayarlar. Böylece, Jetpack Compose'da sonuçtaki LiveData'nın kullanılması, ilk bileşimde doğru duruma sahip olur. (I91d2b, b/269479952)ViewModel
,onCleared()
için bir arama aldıysaaddCloseable()
artıkCloseable
'ı hemen kapatıyor.ViewModel
(I4712e, b/280294730)
Hata Düzeltmeleri
- Yaşam döngüsü
2.6.2
: Durum geri yüklendiyse,save()
üst öğede durumu gerçekten kaydetmeden çağrıldıysa ve ardından durum tekrar geri yüklendiyseSavedStateHandle
'nin işlem sonlandırıldıktan sonra doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi.SavedStateRegistry
Bu,rememberSaveable
ile Navigation Compose'unNavHost
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
iptal edilir. 2.7.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
Lifecycle.State
artıkLifecycle.currentStateFlow
aracılığıyla Compose'da gözlemlenebilir.Lifecycle.currentStateFlow
,value
değerinin mevcutLifecycle.State
olduğu birStateFlow
döndürür. (Ib212d, b/209684871)Lifecycle.Event
s artıkLifecycle.asFlow().
ileFlow
olarak gözlemlenebiliyor (If2c0f, b/176311030)LifecycleResumeEffect
API, hemLifecycle.Event.ON_RESUME
hem deLifecycle.Event.ON_PAUSE
etkinlik geri çağırmalarına dayalıSideEffect
s çalıştırmak için eklendi. (I60386, b/235529345)LifecycleStartEffect
,Lifecycle.Event.ON_START
veLifecycle.Event.ON_STOP
etkinlik geri çağırmalarına dayalıSideEffect
'leri çalıştırmak için API eklendi. (I5a8d1, b/235529345)LifecycleEventEffect
API,Lifecycle.Event
temel alınarakSideEffect
Compose'ların çalıştırılması için eklendi. (Ic9794, b/235529345)Lifecycle.collectAsState()
uzantısı,Lifecycle.State
öğesini doğrudan ComposeState
olarak kullanıma sunmak için eklendi. Bu,lifecycle.currentStateFlow.collectAsState()
ile eşdeğerdir (ve daha kısa bir alternatiftir). (I11015, b/235529345)
Hata Düzeltmeleri
LiveData.distinctUntilChanged()
uzantısı, öncekiLiveData
'ye değer ayarlanmışsa döndürülenLiveData
'ninvalue
değerini ayarlar. Bu durum, gözlem davranışını değiştirmez. KaynaktanLiveData
gelen güncellenmiş değerler, yalnızcadistinctUntilChanged()
kaynağından döndürülenLiveData
değerini gözlemlemeye başladığınızda uygulanır. (Ib482f)LifecycleObserver
ile ilişkili proguard keep kuralları kaldırıldı. Bu nedenle, yansıtma yoluyla API'leri kullanmak isteyen ProGuard'lı kodun, kendi kullanım alanına özel keep kurallarını sağlaması gerekir. (Ia12fd)
Sürüm 2.6
Sürüm 2.6.2
6 Eylül 2023
androidx.lifecycle:lifecycle-*:2.6.2
iptal edilir. 2.6.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Durum geri yüklendiyse,
SavedStateRegistry
üst öğesinde durum kaydedilmedensave()
çağrıldıysa ve ardından durum tekrar geri yüklendiyseSavedStateHandle
öğesinin işlem sonlandırıldıktan sonra doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. Bu,rememberSaveable
ile Navigation Compose'unNavHost
arasındaki etkileşimi düzeltir. (aosp/2729289)
Sürüm 2.6.1
22 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.1
iptal edilir. 2.6.1 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
lifecycle-viewmodel-savedstate
artık SavedState1.2.1
'e bağlıdır. (cd7251)- Yaşam döngüsü artık ProfileInstaller
1.3.0
'a bağlıdır. (f9d30b)
Sürüm 2.6.0
8 Mart 2023
androidx.lifecycle:lifecycle-*:2.6.0
iptal edilir. 2.6.0 sürümü şu commit'leri içerir.
2.5.0 sürümünden beri yapılan önemli değişiklikler
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çinnull
döndürenliveData.value
ile açık birnull
değeri arasında ayrım yapmanıza olanak tanır.MediatorLiveData
artık ilk değeri ayarlamak için bir oluşturucu içeriyor.collectAsStateWithLifecycle()
'inStateFlow
veFlow
üzerinde, akışlardan veri toplayan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Compose State olarak temsil eden yeni bir uzantı eklendi.- Duraklatma dağıtıcısı kullanmak bazı durumlarda kaynak israfına yol açabileceğinden
Lifecycle.launchWhenX
veLifecycle.whenX
yöntemlerinin desteği sonlandırıldı.Lifecycle.repeatOnLifecycle
kullanılması önerilir. Çalışmanın tek seferlik olarak askıya alınması hakkında daha fazla bilgi için lütfen bunun neden doğası gereği güvenli olmadığını açıklayan bu belgeye bakın. - Kotlin'e Dönüştürme: Çok sayıda Lifecycle sınıfı Kotlin'e dönüştürüldü. Dönüştürülen tüm sınıflar, önceki sürümlerle ikili uyumluluklarını korur. Kotlin ile yazılan sınıflar için aşağıdaki sınıflarda kaynakla uyumlu olmayan değişiklikler yapıldı:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
Aşağıdaki tabloda, yaşam döngüsünün yeni sürümündeki kaynak dönüşümleri verilmiştir.
Yaşam Döngüsü 2.5 | Yaşam Döngüsü 2.5 (KTX) | Yaşam Döngüsü 2.6 |
---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin'de oluşturulan bir
Observer
öğesininonChanged
yönteminin boş değer atanabilirliği artık genel türün boş değer atanabilirliğiyle eşleşiyor.Observer.onChanged()
'nın boş değer atanabilir bir türü kabul etmesini istiyorsanızObserver
'yi boş değer atanabilir bir türle başlatmanız gerekir. - Bu sınıflar da Kotlin'e dönüştürüldü ancak kaynak uyumluluğu korunuyor:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
veProcessLifecycleOwner
Sürüm 2.6.0-rc01
22 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LiveData.distinctUntilChanged()
uzantısı, öncekiLiveData
'ye değer ayarlanmışsa döndürülenLiveData
'ninvalue
değerini ayarlar. Bu durum, gözlem davranışını değiştirmez. KaynaktanLiveData
gelen güncellenmiş değerler, yalnızcadistinctUntilChanged()
kaynağından döndürülenLiveData
değerini gözlemlemeye başladığınızda uygulanır. (Ib482f)
Sürüm 2.6.0-beta01
8 Şubat 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.
Kotlin Dönüşümleri
LifecycleOwner
artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık öncekigetLifecycle()
işlevini uygulamak yerinelifecycle
özelliğini geçersiz kılmalıdır. (I75b4b, b/240298691)ViewModelStoreOwner
artık Kotlin'de. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık öncekigetViewModelStore()
işlevini uygulamak yerineviewModelStore
özelliğini geçersiz kılmalıdır. (I86409, b/240298691)LifecycleOwner
üzerindekilifecycleScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
'denlifecycle-common
yapay eserine taşındı. (I41d78, b/240298691)Lifecycle
üzerindekicoroutineScope
alanını sağlayan Kotlin uzantısı,lifecycle-runtime-ktx
'denlifecycle-common
yapay eserine taşındı. (Iabb91, b/240298691)
Sürüm 2.6.0-alpha05
25 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
iptal edilir. 2.6.0-alpha05 sürümü şu commit'leri içerir.
Kotlin Dönüşümleri
Transformations
artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış ve doğrudanTransformations.map
gibi bir söz dizimi kullanan sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Kotlin kodu, daha önce yalnızcalifecycle-livedata-ktx
kullanılırken kullanılabilen Kotlin uzantı yöntemi söz dizimini kullanmalıdır. Java programlama dili kullanılırkenandroidx.arch.core.util.Function
yöntemi alan bu yöntemlerin sürümleri kullanımdan kaldırılır ve KotlinFunction1
alan sürümlerle değiştirilir. Bu değişiklik, ikili uyumluluğu korur. (I8e14f)ViewTreeViewModelStoreOwner
artık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için artıkView
,androidx.lifecycle.setViewTreeViewModelStoreOwner
veandroidx.lifecycle.findViewTreeViewModelStoreOwner
üzerinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, ikili uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynak uyumluluğunu korur. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
arayüzü artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık önceki ilgili işlevleri uygulamak yerinedefaultViewModelProviderFactory
vedefaultViewModelCreationExtras
özelliklerini geçersiz kılmalıdır. (Iaed9c, b/240298691)Observer
artık Kotlin ile yazılıyor.onChanged()
yöntemi artık parametresi içinvalue
adını kullanıyor. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
veProcessLifecycleOwner
artık Kotlin'de yazılıyor (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Sürüm 2.6.0-alpha04
11 Ocak 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
iptal edilir. 2.6.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
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çinnull
döndürenliveData.value
ile açık birnull
değeri arasında ayrım yapmanıza olanak tanır. (Ibd018)
API Değişiklikleri
collectAsStateWithLifecycle()
lifecycle-runtime-compose
API'leri artık deneysel durumda değil. (I09d42, b/258835424)- Duraklatma dağıtıcısı kullanmak bazı durumlarda kaynak israfına yol açabileceğinden
Lifecycle.launchWhenX
veLifecycle.whenX
yöntemlerinin desteği sonlandırıldı.Lifecycle.repeatOnLifecycle
kullanılması önerilir. (Iafc54, b/248302832)
Kotlin Dönüşümleri
ViewTreeLifecycleOwner
artık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için artıkView
,androidx.lifecycle.setViewTreeLifecycleOwner
veandroidx.lifecycle.findViewTreeLifecycleOwner
üzerinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu,lifecycle-runtime-ktx
'daki önceki Kotlin uzantısının yerini alır. Bu, ikili uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynak uyumluluğunu korur. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
artık Kotlin ile yazılıyor. Daha öncelifecycle-reactivestreams-ktx
içinde bulunan Kotlin uzantılarılifecycle-reactivestreams
modülüne taşındı ve Kotlin ile yazılan kodlar için birincil yüzey haline geldi. Kotlin uzantı yöntemi API'lerini kullanmıyorsanız bu, Kotlin'de yazılan kod için kaynakla uyumlu olmayan bir değişikliktir. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
veViewModelStore
artık Kotlin'de yazılıyor (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Hata Düzeltmeleri
SavedStateHandle
artık yanlış sınıf türüyleget()
aranırkenClassCastException
ile kilitlenmiyor. (I6ae7c)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
iptal edilir. 2.6.0-alpha03 sürümünde şu commit'ler yer alıyor.
Hata Düzeltmeleri
- Farklı yaşam döngüsü modülleri arasındaki kısıtlamaların amaçlandığı gibi çalışmaması sorunu düzeltildi. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
tarafından oluşturulan hatalar artık geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha faydalı bir hata mesajı içeriyor. (Idf4b2, b/244910446)
Sürüm 2.6.0-alpha02
7 Eylül 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
iptal edilir. 2.6.0-alpha02 sürümünde şu commit'ler yer alıyor.
API Değişiklikleri
MediatorLiveData
artık ilk değeri ayarlamak için bir oluşturucu 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ıtlamalar içeriyor. Bu kısıtlamalar, bağımlılıklardan biri yükseltildiğinde diğerlerini otomatik olarak yükseltiyor. b/242871265FlowLiveData.asFlow()
, iş parçacığı güvenliğini ve bağlam korumasını sağlamak için kendiChannel
uygulamasını kullanmak yerine artıkcallbackFlow
oluşturuyor. (I4a8b2, b/200596935)FlowLiveData
'nınasLiveData
işlevi, yeniLiveData
nesnesi oluşturulurken artıkStateFlow
'nin başlangıç değerini koruyacak. (I3f530, b/157380488)- Yaşam Döngüsü
2.5.1
:AndroidViewModelFactory
'nin özel uygulamaları, durum bilgisi olan oluşturucuLifecycle
2.4+ ile kullanılırken artıkcreate(modelClass)
işlevini doğru şekilde çağırıyor (I5b315, b/238011621).
Sürüm 2.6.0-alpha01
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
StateFlow
veFlow
üzerinde, akışlardan veri toplayan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Compose State olarak temsil edencollectAsStateWithLifecycle
ile ilgili yeni bir uzantı eklendi. Yaşam döngüsü en az belirli birLifecycle.State
olduğunda akış toplanır ve yeni yayın, State'in değerine ayarlanır. Yaşam döngüsü buLifecycle.State
değerinin altına düştüğünde akış toplama işlemi durur ve State'in değeri güncellenmez. (I1856e, b/230557927)
Sürüm 2.5
Sürüm 2.5.1
27 Temmuz 2022
androidx.lifecycle:lifecycle-*:2.5.1
iptal edilir. 2.5.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
AndroidViewModelFactory
'nın özel uygulamaları, durum bilgisi olanAndroidViewModelFactory
oluşturucuyuLifecycle
2.4+ ile kullanırken artıkcreate(modelClass)
işlevini doğru şekilde çağırıyor. (I5b315, b/238011621)
Sürüm 2.5.0
29 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0
iptal edilir. 2.5.0 sürümü şu commit'leri içerir.
2.4.0 sürümünden beri yapılan önemli değişiklikler
SavedStateHandle
artıkgetStateFlow()
API'si sunuyor. Bu API,LiveData
kullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlow
döndürüyor.ViewModel CreationExtras: Özel bir
ViewModelProvider.Factory
yazarken sırasıylaApplication
veyaSavedStateHandle
'ye erişmek için artıkAndroidViewModelFactory
veyaAbstractSavedStateViewModelFactory
'yi genişletmek gerekmiyor. Bunun yerine, bu alanlarcreate
:create(Class<T>, CreationExtras)
yeni aşırı yüklemesi aracılığıylaCreationExtras
olarak herViewModelProvider.Factory
alt sınıfına sağlanır. Bu ekstralar, sırasıyla Activity1.5.0
ve Fragment1.5.0
kullanılırken Etkinliğiniz veya Parçanız tarafından otomatik olarak sağlanır.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
lifecycle-viewmodel
artıkviewModelFactory
Kotlin DSL'si sunuyor. Bu DSL,ViewModelProvider.Factory
öğenizi birincil veri kaynağı olarakCreationExtras
kullanarak, özel fabrikanızın desteklediği her birViewModel
sınıfı için bir tane olmak üzere bir veya daha fazla lambda başlatıcı açısından tanımlamanıza olanak tanır.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
lifecycle-viewmodel-compose
artık özel birViewModelProvider.Factory
oluşturulmasını gerektirmedenViewModel
örneği oluşturmak için lambda fabrikası alan birviewModel()
API sunuyor.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
SavedStateHandle Compose Saver Integration:
lifecycle-viewmodel-compose
yapısı artıkSavedStateHandle.saveable
içinde yeni deneysel API'ler içeriyor. Bu API'ler,SavedStateHandle
ile desteklenenrememberSaveable
benzeri davranışlara olanak tanıyor.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
addCloseable()
API'si veonCleared()
'de herhangi bir manuel işlem yapılmasına gerek kalmadanViewModel
temizlendiğinde kapatılacak olanViewModel
'ye bir veya daha fazlaCloseable
nesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi.Örneğin, bir ViewModel'e yerleştirebileceğiniz ancak test yoluyla kontrol edebileceğiniz bir coroutine kapsamı oluşturmak için
Closeable
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 değer,
ViewModel
ile aynı kullanım ömrüne sahip olacak şekildeviewModelScope
oluşturucunuzda kullanılabilir:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Davranış değişiklikleri
Lifecycle.State
öğesiniINITIALIZED
konumundanDESTROYED
konumuna taşımaya çalışırken artıkLifecycle
öğesine gözlemci eklenip eklenmediğine bakılmaksızın her zamanIllegalStateException
hatası verilecek.LifecycleRegistry
artıkDESTROYED
durumuna ulaştığında gözlemcilerini temizleyecek.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
iptal edilir. 2.5.0-rc02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
ViewModelProvider
, compileOnly Lifecycle bağımlılıklarının önceki sürümleri 2.5 ve sonraki sürümlerle karıştırıldığında artık kilitlenmeyecek. (I81a66, b/230454566)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
MediatorLiveData.addSource()
artıknull
kaynağını gözlemcilere yaymak yerinenull
kaynağı geçirildiğindeNullPointerException
oluşturuyor.(Ibd0fb, b/123085232)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Durumu
SavedStateHandle
içinde kalıcı hale getirmek için özellik adlarını anahtar olarak kullanmak üzereSavedStateHandle.saveable
özellik temsilcileri eklendi (I8bb86, b/225014345)
Hata Düzeltmeleri
- Birincil olmayan bir alt gezinme sekmesinde bir
NavHost
öğesini başka birNavHost
öğesinin içine yerleştirmenin, birden fazla geri yığın kullanıldığındaIllegalStateException
öğesine yol açmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)
Sürüm 2.5.0-alpha06
6 Nisan 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
iptal edilir. 2.5.0-alpha06 sürümü şu commit'leri içerir.
Yeni Özellikler
MutableState
aşırı yüklemesinirememberSaveable
ile eşitlik sağlamak içinSavedStateHandle.saveable
'e deneysel olarak ekleyin (I38cfe, b/224565154)
API Değişiklikleri
CreationExtras
artık sealed yerine abstract. (Ib8a7a)
Hata Düzeltmeleri
IllegalStateException: Already attached to lifecycleOwner
hatası düzeltildi. Bu hatayaSavedStateHandleController
neden oluyordu. (I7ea47, b/215406268)
Sürüm 2.5.0-alpha05
23 Mart 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
iptal edilir. 2.5.0-alpha05 sürümü şu commit'leri içerir.
Yeni Özellikler
lifecycle-viewmodel-compose
modülü artıkSavedStateHandleSaver
adlı deneysel bir API sunuyor. Bu API,SavedStateHandle
içindeki değerlerinrememberSaveable
ile aynı kaydedilmiş örnek durumuyla doğru şekilde entegre edilmesini sağlıyor. (Ia88b7, b/195689777)
API Değişiklikleri
- Java'da Lifecycle 2.3 ve daha yeni Lifecycle sürümleriyle ilgili uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)
Hata Düzeltmeleri
SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatılmış olsa bileCreationExtras
kullanımını destekliyor. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
Sürüm 2.5.0-alpha04
9 Mart 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
iptal edilir. 2.5.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
SavedStateHandle
artıkLiveData
kullanmaya alternatif olarak değer değişikliklerini izlemek için KotlinStateFlow
döndüren birgetStateFlow()
API'si sunuyor. (Iad3ab, b/178037961)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
addCloseable()
API'si veonCleared()
'de herhangi bir manuel işlem yapılmasına gerek kalmadanViewModel
temizlendiğinde kapatılacak olanViewModel
'ye bir veya daha fazlaCloseable
nesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi. (I55ea0)lifecycle-viewmodel
artıkCreationExtras
'ü birincil veri kaynağı olarak kullanarak belirliViewModel
sınıflarını işlemek için lambda eklemenize olanak tanıyan birInitializerViewModelFactory
sunuyor. (If58fc, b/216687549)lifecycle-viewmodel-compose
artık özel birViewModelProvider.Factory
oluşturulmasını gerektirmedenViewModel
örneği oluşturmak için lambda fabrikası alan birviewModel()
API sunuyor. (I97fbb, b/216688927)
API Değişiklikleri
- Artık
lifecycle-viewmodel-compose
üzerindenCreationExtras
ileViewModel
oluşturabilirsiniz. (I08887, b/216688927)
Davranış değişiklikleri
Lifecycle.State
öğesiniINITIALIZED
konumundanDESTROYED
konumuna taşımaya çalışırken,Lifecycle
öğesine gözlemci eklenip eklenmediğine bakılmaksızın her zamanIllegalStateException
hatası verilir. (I7c390, b/177924329)LifecycleRegistry
artıkDESTROYED
durumuna ulaştığında gözlemcilerini temizleyecek. (I4f8dd, b/142925860)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
iptal edilir. 2.5.0-alpha02 sürümünde şu commit'ler yer alıyor.
API Değişiklikleri
SavedStateHandle
veSavedStateViewModelFactory
, Kotlin'e dönüştürüldü. Bu, her iki sınıftaki genel türlerin null yapılabilirliğini iyileştirdi. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
işlev parametresi artık boş değer atanabilir bir çıkışa sahip olabilir. (I40396, b/132923666)LiveData
-ktx uzantıları artık@CheckResult
ile açıklama eklenerek bu işlevler çağrıldığında sonucun kullanılmasını zorunlu kılıyor. (Ia0f05, b/207325134)
Davranış değişiklikleri
SavedStateHandle
artık belirtilen anahtar için değer olmadığında defaultValue'yu düzgün şekilde saklıyor. (I1c6ce, b/178510877)
Hata Düzeltmeleri
- Yaşam döngüsü
2.4.1
bölümünde:ProcessLifecycleInitializer
öğesininStartupException
oluşturmasını engelleyen düzeltmelerin varsayılan olarak kullanılabilmesi içinlifecycle-process
öğesi Startup 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724) - Özel
AndroidViewModel
sınıfları yanlış sırada parametreler içerdiğinde veViewModel
oluşturmaya çalıştığında artık daha iyi bir hata mesajı gösteriliyor. (I340f7, b/177667711) - Artık
CreationExtras
üzerindenAndroidViewModelFactory
kullanarak uygulama ayarlamadan görünüm modeli oluşturabilirsiniz. (I6ebef, b/217271656)
Sürüm 2.5.0-alpha01
26 Ocak 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.
ViewModel CreationExtras
Bu sürümle birlikte, ViewModel
oluşturma şeklini yeniden yapılandırmanın temelini atıyoruz. Her biri ek işlevsellik sağlayan (AndroidViewModelFactory
aracılığıyla Application
oluşturucu parametresine, SavedStateViewModelFactory
ve AbstractSavedStateViewModelFactory
aracılığıyla SavedStateHandle
oluşturucu parametresine izin verme vb.) katı bir ViewModelProvider.Factory
alt sınıfı kümesi yerine, yeni bir kavram olan CreationExtras
'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ı yapmayacak. Bunun yerine, create
işlevinin yeni bir aşırı yüklenmesini çağırır: create(Class<T>, CreationExtras)
. Bu nedenle, ViewModelProvider.Factory
örneğinin doğrudan uygulandığı her durumda aşağıdaki yeni CreationExtras
özelliklerine erişilebilir:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: BuString
,ViewModelProvider.get()
'ye ilettiğiniz özel anahtara erişim sağlar.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
,Application
sınıfına erişim sağlıyor.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
, bu ViewModel'i oluşturmak için kullanılanSavedStateRegistryOwner
öğesine erişim sağlar.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
, bu ViewModel'i oluşturmak için kullanılanViewModelStoreOwner
öğesine erişim sağlar.SavedStateHandleSupport.DEFAULT_ARGS_KEY
,SavedStateHandle
oluşturmak için kullanılması gerekenBundle
bağımsız değişkenlerine erişim sağlar.
Bu ekstralar, Activity 1.5.0-alpha01
, Fragment 1.5.0-alpha01
ve Navigation 2.5.0-alpha01
kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların daha eski bir sürümünü kullanıyorsanız CreationExtras
boş olur. ViewModelProvider.Factory
öğesinin mevcut tüm alt sınıfları, bu kitaplıkların önceki sürümlerinde kullanılan eski oluşturma yolunu ve gelecekte kullanılacak CreationExtras
yolunu destekleyecek şekilde yeniden yazılmıştır.
Bu CreationExtras
, Fabrika alt sınıflarının katı bir hiyerarşisine güvenmeden, ihtiyacınız olan bilgileri her ViewModel
'ye ileten bir ViewModelProvider.Factory
oluşturmanıza olanak tanır:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
Yalnızca ihtiyaç duyan ViewModel için SavedStateHandleSupport
kaynağından CreationExtras
üzerinde createSavedStateHandle()
Kotlin uzantı işlevini kullanarak SavedStateHandle
oluştururuz. (Ia6654, b/188541057)
Özel CreationExtras
, ComponentActivity
veya Fragment
içinde getDefaultViewModelCreationExtras()
geçersiz kılınarak sağlanabilir. Böylece, özel ViewModelProvider.Factory
içinde yerleşik bir destekli yerleştirme biçimi olarak kullanılabilir. Bu ekstralar, doğrudan ViewModelProvider
ile kullanıldığında veya by viewModels()
ve by activityViewModels()
Kotlin özelliği uzantıları kullanıldığında özel Factory'nizde otomatik olarak kullanılabilir. (I79f2b, b/207012584, b/207012585, b/207012490)
Hata Düzeltmeleri
SavedStateHandle
öğesine sağlanan varsayılan değerin, işlem sonlandırılıp yeniden oluşturulduktan sonraSavedStateHandle
öğesinden özel olarak kaldırılmış olsa bile yeniden görünmesi sorunu düzeltildi. Bunun sonucundaSavedStateHandle
, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)
Sürüm 2.4
Sürüm 2.4.1
9 Şubat 2022
androidx.lifecycle:lifecycle-*:2.4.1
iptal edilir. 2.4.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Lifecycle
2.5.0-alpha01
'dan geri aktarıldı:SavedStateHandle
'dan özel olarak kaldırılmış olsa bile, birSavedStateHandle
'a sağlanan varsayılan değerin işlem sonlandırılıp yeniden oluşturulduktan sonra tekrar görünmesine neden olan sorun düzeltildi. Bunun sonucundaSavedStateHandle
, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b) lifecycle-process
artık Androidx Startup 1.1.1'e bağlıdır. Bu sürümde,ProcessLifecycleInitializer
kullanımınınStartupException
'e neden olduğu bir regresyon düzeltildi. (b/216490724)
Sürüm 2.4.0
27 Ekim 2021
androidx.lifecycle:lifecycle-*:2.4.0
iptal edilir. 2.4.0 sürümü şu commit'leri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
@OnLifecycleEvent
desteği sonlandırıldı. Bunun yerineLifecycleEventObserver
veyaDefaultLifecycleObserver
kullanılmalıdır.androidx.lifecycle:lifecycle-viewmodel-compose
kitaplığı eklendi.viewModel()
composable veLocalViewModelStoreOwner
sağlar.- Kaynakta yapılan, geriye dönük uyumluluğu bozan değişiklik:
ViewModelProvider
, Kotlin'de yeniden yazıldı.ViewModelProvider.Factory.create
yöntemi artık boş değer atanabilir genel değerlere izin vermiyor.
- Kaynakta yapılan, geriye dönük uyumluluğu bozan değişiklik:
androidx.lifecycle:lifecycle-runtime-ktx
'ya yeni eş yordam API'leri eklendi:Lifecycle.repeatOnLifecycle
, Lifecycle en az belirli bir durumdayken bir kod bloğunu eşzamanlı yordamda yürüten API. Yaşam döngüsü hedef durumun içine ve dışına çıktıkça engelleme iptal edilip yeniden başlatılır.Flow.flowWithLifecycle
, yaşam döngüsü belirli bir durumda olduğunda yukarı akış Flow'dan değerler yayan API.DefaultLifecycleObserver
,lifecycle.lifecycle-common-java8
konumundanlifecycle.lifecycle-common
konumuna taşındı.lifecycle.lifecycle-common-java8
,lifecycle.lifecycle-common
üzerinde artık ek işlev sağlamadığındanlifecycle.lifecycle-common-java8
'ya olan bağımlılıklifecycle.lifecycle-common
ile değiştirilebilir.lifecycle-viewmodel-ktx
'daki coroutine olmayan API'lerlifecycle-viewmodel
modülüne taşındı.lifecycle-process
artıkProcessLifecycleOwner
'ı başlatmak içinandroidx.startup
kullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.Geçmişte
tools:node="remove"
işlem yaşam döngüsünü başlatmak içinContentProvider
kullanmışsanız bunun yerine aşağıdakileri yapmanız gerekir.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Sürüm 2.4.0-rc01
29 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
, Lifecycle 2.4.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. 2.4.0-rc01 sürümü şu commit'leri içerir.
Sürüm 2.4.0-beta01
15 Eylül 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
iptal edilir. 2.4.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
@OnLifecycleEvent
desteği sonlandırıldı. Bunun yerineLifecycleEventObserver
veyaDefaultLifecycleObserver
kullanılmalıdır. (I5a8fa)- DefaultLifecycleObserver,
androidx.lifecycle.lifecycle-common-java8
konumundanandroidx.lifecycle.lifecycle-common
konumuna taşındı.androidx.lifecycle.lifecycle-common-java8
,androidx.lifecycle.lifecycle-common
üzerinde artık ek işlev sağlamadığındanandroidx.lifecycle.lifecycle-common-java8
'ya olan bağımlılıkandroidx.lifecycle.lifecycle-common
ile değiştirilebilir. (I021aa) lifecycle-viewmodel-ktx
içindeki coroutine olmayan API'lerlifecycle-viewmodel
modülüne taşındı. (I6d5b2)
Harici Katkı (External Contribution)
Sürüm 2.4.0-alpha03
4 Ağustos 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
iptal edilir. 2.4.0-alpha03 sürümünde şu commit'ler yer alıyor.
API Değişiklikleri
- Kaynakta yapılan, uyumluluğu bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı.
ViewModelProvider.Factory.create
yöntemi artık boş değer atanabilir genel öğelere izin vermiyor. (I9b9f6)
Davranış Değişiklikleri
Lifecycle.repeatOnLifecycle
:block
, yürütme tekrarlandığında artık her zaman seri olarak çağrılıyor. (Ibab33)
Harici Katkı (External Contribution)
repeatOnLifecycle
belgelerindeki kod snippet'lerini düzelttiği için chao2zhang'a teşekkür ederiz. #205.
Sürüm 2.4.0-alpha02
16 Haziran 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
iptal edilir. 2.4.0-alpha02 sürümünde bu commit'ler yer alıyor.
Yeni Özellikler
RepeatOnLifecycleWrongUsage
,onStart()
veyaonResume()
içinderepeateOnLifecycle
yanlış kullanıldığında bunu tespit eden yeni birRepeatOnLifecycleWrongUsage
lint kontrolü eklendi.lifecycle-runtime-ktx
(706078, b/187887400)
API Değişiklikleri
- Yapılandırılmış eşzamanlılığa saygı duyan ve hakkında akıl yürütmesi daha kolay olan
Lifecycle.repeatOnLifecycle
lehineLifecycleOwner.addRepeatingJob
API'si kaldırıldı. (I4a3a8) - Diğer
androidx.startup.Initializer
'lerin bunları bağımlılık olarak kullanabilmesi içinProcessLifecycleInitializer
'yı herkese açık hale getirin. (I94c31)
Hata Düzeltmeleri
- Alan değiştiricilere sahip olduğunda
NullSafeMutableLiveData
lint kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616) - Jenerik türler kullanılırken
NullSafeMutableLiveData
lint kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)
Harici Katkı (External Contribution)
NullSafeMutableLiveData
lint kontrolünü iyileştirdiği için maxsav'a teşekkür ederiz. (#147, b/183696616)NullSafeMutableLiveData
lint kontrolünü iyileştirdiği için kozaxinan'a teşekkür ederiz. (#161, b/184830263)
Sürüm 2.4.0-alpha01
24 Mart 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.
Davranış Değişiklikleri
lifecycle-process
artıkProcessLifecycleOwner
'ı başlatmak içinandroidx.startup
kullanıyor.Bu işlem daha önce
androidx.lifecycle.ProcessLifecycleOwnerInitializer
tarafından yapılıyordu.Geçmişte
tools:node="remove"
işlem yaşam döngüsünü başlatmak içinContentProvider
kullanmışsanız bunun yerine aşağıdakileri yapmanız gerekir.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(veya)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API Değişiklikleri
Flow.flowWithLifecycle
API'si kullanılarak yaşam döngüsü en azından belirli bir durumdayken yukarı akışlı Flow'dan değerler yayan birFlow.flowWithLifecycle
API'si eklendi.Lifecycle.repeatOnLifecycle
Bu, yeniLifecycleOwner.addRepeatinJob
API'nin bir alternatifidir. (I0f4cd)
Hata Düzeltmeleri
- Lifecycle 2.3.1 sürümünden itibaren:
NonNullableMutableLiveData
lint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)
Lifecycle Viewmodel Compose Version 1.0.0
Sürüm 1.0.0-alpha07
16 Haziran 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.
API'de yapılan, geriye dönük uyumluluğu bozan değişiklikler
viewModel()
artık isteğe bağlıViewModelStoreOwner
parametresini kabul ediyor. Bu sayede,LocalViewModelStoreOwner
dışındaki sahiplerle çalışmak daha kolay hale geliyor. Örneğin, artık belirli bir gezinme grafiğiyle ilişkili bir ViewModel'i almak içinviewModel(navBackStackEntry)
kullanabilirsiniz. (I2628d, b/188693123)
Sürüm 1.0.0-alpha06
2 Haziran 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri içerir.
Compose'un 1.0.0-beta08
sürümüyle uyumlu olacak şekilde güncellendi.
Sürüm 1.0.0-alpha05
18 Mayıs 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
Yeni Özellikler
- Compose'un
1.0.0-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 uyumlu (I6f9de, b/184718994)
Sürüm 1.0.0-alpha04
7 Nisan 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
Bağımlılık Değişiklikleri
- Bu sürüm,
androidx.hilt:hilt-navigation-compose
veandroidx.navigation:navigation-compose
'ninandroidx.compose.compiler:compiler:1.0.0-beta04
veandroidx.compose.runtime:runtime:1.0.0-beta04
'deki bağımlılıkları senkronize etmesine olanak tanır. 1.0.0 sürümünde derleyici ve çalışma zamanının eşleşmesi gerekir.
Sürüm 1.0.0-alpha03
10 Mart 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
LocalViewModelStoreOwner.current
artıkViewModelStoreOwner
değerinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürüyor.ViewModelStoreOwner
ViewModelStoreOwner
gerektiren API'ler (ör.viewModel()
veNavHost
)ViewModelStoreOwner
ayarlanmamışsa yine de istisna oluşturur. (Idf39a)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha02
24 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
LocalViewModelStoreOwner
artıkasProvidableCompositionLocal()
API'nin yerini alan veCompositionLocalProvider
ile kullanılabilenprovides
işlevlerine sahip. (I45d24)
Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha01
10 Şubat 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
viewModel()
composable'ı veLocalViewModelStoreOwner
,androidx.lifecycle.viewmodel.compose
paketindekiandroidx.compose.ui.viewinterop
konumundan bu yapıya taşındı. (I7a374)
Sürüm 2.3.1
Yaşam Döngüsü Sürüm 2.3.1
24 Mart 2021
androidx.lifecycle:lifecycle-*:2.3.1
iptal edilir. 2.3.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
Lint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)
Sürüm 2.3.0
Sürüm 2.3.0
10 Şubat 2021
androidx.lifecycle:lifecycle-*:2.3.0
iptal edilir. 2.3.0 sürümü şu commit'leri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
SavedStateHandle
Parcelable olmayan sınıflar için destek:SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
'ı çağırmanıza izin vererek tembel serileştirmeyi destekliyor. Bu sayede,SavedStateHandle
'ın durumunu kaydetmesi istendiğindesaveState()
'a geri çağırma işlemi yapacak birSavedStateProvider
sağlıyor. Paketlenebilir olmayan sınıfları kaydetme başlıklı makaleyi inceleyin.- Yaşam Döngüsü Davranış Yaptırımı:
- LifecycleRegistry artık
DESTROYED
durumunu son durum olarak zorunlu kılıyor. LifecycleRegistry
artık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize ait olanLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda,LifecycleRegistry
nesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
- LifecycleRegistry artık
- Yaşam Döngüsü Durumu ve Etkinlik Yardımcıları:
Lifecycle.Event
'yedownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Bu yöntemler,State
ve geçiş yönü verildiğindeEvent
oluşturmak için kullanılır. Lifecycle'ınEvent
'dan hemen sonra geçiş yapacağıState
'ı sağlayangetTargetState()
yöntemi eklendi. withStateAtLeast
: Bir yaşam döngüsü durumu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan bir kod bloğunu çalıştıran, ardından sonuçla devam edenLifecycle.withStateAtLeast
API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermemeleri ve özel bir dağıtıcı kullanmamaları nedeniyle mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)ViewTree
API'ler: Yeni birViewTreeLifecycleOwner.get(View)
veViewTreeViewModelStoreOwner.get(View)
API'si, birView
örneği verildiğinde sırasıylaLifecycleOwner
veViewModelStoreOwner
içerenleri almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity1.2.0
, Fragment1.3.0
ve AppCompat 1.3.0-alpha01 veya sonraki sürümlere yükseltmeniz gerekir.findViewTreeLifecycleOwner
vefindViewTreeViewModelStoreOwner
Kotlin uzantıları sırasıylalifecycle-runtime-ktx
velifecycle-viewmodel-ktx
'de kullanılabilir.LiveData.observe()
Kotlin uzantısı desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olanLiveData.observe()
Kotlin uzantısı, Kotlin 1.4 kullanılırken gerekli olmadığı için artık desteklenmiyor.
Sürüm 2.3.0-rc01
16 Aralık 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
keys()
SavedStateHandle
yöntemi, durum kaydedilmeden önce ve sonra tutarlı hale geldi. Artıkset()
vegetLiveData()
ile kullanılan anahtarlara ek olarak daha öncesetSavedStateProvider()
ile kullanılan anahtarları da içeriyor. (aosp/1517919, b/174713653)
Harici Katkı (External Contribution)
- Yaşam döngüsüne duyarlı eş yordamları askıya alma API'leri artık
yield()
çağrılarını daha iyi işliyor. Nicklas Ansman Giertz'e teşekkür ederiz. (aosp/1430830, b/168777346)
Sürüm 2.3.0-beta01
1 Ekim 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
iptal edilir. 2.3.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Lambda söz dizimini kullanmak için gerekli olan
LiveData.observe()
Kotlin uzantısı artık Kotlin 1.4'te gerekli olmadığından kullanımdan kaldırıldı. (I40d3f)
Hata Düzeltmeleri
- Kotlin 1.4'ü kullanmak için androidx'i yükseltin (Id6471, b/165307851, b/165300826)
Belgelerdeki Değişiklikler
liveData
oluşturucu veasLiveData()
dokümanları, verilen zaman aşımı değerlerinin değiştirilmesiyle ilgili ayrıntıları içerecek şekilde güncellendi. (aosp/1122324)
Sürüm 2.3.0-alpha07
19 Ağustos 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
iptal edilir. 2.3.0-alpha07 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NullSafeMutableLiveData
Lint kontrolünde kilitlenme sorunu düzeltildi. (aosp/1395367)
Sürüm 2.3.0-alpha06
22 Temmuz 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
iptal edilir. 2.3.0-alpha06 sürümü şu commit'leri içerir.
Yeni Özellikler
State
ve geçiş yönü verildiğindeEvent
oluşturmak içinLifecycle.Event
'edownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
statik yardımcı yöntemleri eklendi. Lifecycle'ınEvent
'dan hemen sonra geçiş yapacağıState
'ı sağlayangetTargetState()
yöntemi eklendi. (I00887)- Yaşam döngüsü durumunu bekleyen ve durum değişikliği sırasında askıya alınmayan bir kod bloğunu eşzamanlı olarak çalıştıran, ardından sonuçla devam eden
Lifecycle.withStateAtLeast
API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermemeleri ve özel bir dağıtıcı kullanmamaları nedeniyle mevcutwhen*
yöntemlerinden farklıdır. (aosp/1326081)
Davranış Değişiklikleri
- LifecycleRegistry artık
DESTROYED
durumunu son durum olarak zorunlu kılıyor. (I00887) LifecycleRegistry
artık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize aitLifecycleRegistry
nesneleri içinLifecycleRegistry.createUnsafe(...)
kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, buLifecycleRegistry
nesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir (Ie7280, b/137392809).
Hata Düzeltmeleri
NullSafeMutableLiveData
uygulamasındaki kilitlenme sorunu düzeltildi. (b/159987480)ObsoleteLintCustomCheck
ile birlikte gelen hata analizi kontrolleri (özellikleNullSafeMutableLiveData
) içinlifecycle-livedata-core-ktx
düzeltildi. (b/158699265)
Sürüm 2.3.0-alpha05
24 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
iptal edilir. 2.3.0-alpha05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
LiveData
artık yeniden giriş yapılan durumları daha iyi işleyerekonActive()
veyaonInactive()
için yinelenen çağrıları önlüyor. (b/157840298)- Android Studio 4.1 Canary 6 veya sonraki sürümleri kullanılırken Lint kontrollerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)
Sürüm 2.3.0-alpha04
10 Haziran 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NonNullableMutableLiveData
Hata analizi kontrolündeki kilitlenme sorunu düzeltildi. (b/157294666)NonNullableMutableLiveData
Lint kontrolü artık, boş olmayan tür parametresine sahip birMutableLiveData
üzerindenull
değeri ayarlanmış olan çok daha fazla durumu kapsıyor. (b/156002218)
Sürüm 2.3.0-alpha03
20 Mayıs 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
yayınlanır. 2.3.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
SavedStateHandle
artık belirli bir anahtar içinsetSavedStateProvider()
işlevini çağırmanıza olanak tanıyarak tembel serileştirmeyi destekliyor. Bu işlev,SavedStateHandle
durumunu kaydetmesi istendiğindesaveState()
işlevine geri çağırma işlemi yapacak birSavedStateProvider
sağlıyor. (b/155106862)- Yeni
ViewTreeViewModelStoreOwner.get(View)
API'si,View
örneği verildiğinde kapsayanViewModelStoreOwner
öğesini almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
ve AppCompat1.3.0-alpha01
'e yükseltme yapmanız gerekir.lifecycle-viewmodel-ktx
'yefindViewModelStoreOwner()
Kotlin uzantısı eklendi. (aosp/1295522)
Hata Düzeltmeleri
MutableLiveData
Lifecycle2.3.0-alpha01
'da yayınlanan Lint kontrollerininlifecycle-livedata-core-ktx
yapısıyla birlikte yayınlanamamasına neden olan sorun düzeltildi. (b/155323109)
Sürüm 2.3.0-alpha02
29 Nisan 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
SavedStateViewModelFactory
artık kolayca kullanılamayan veAndroidViewModel
desteğine ihtiyaç duyulmayan durumları daha iyi desteklemek için oluşturucusuna boşApplication
iletmenize olanak tanıyor. (aosp/1285740)
Hata Düzeltmeleri
- API düzeyi 28 ve daha düşük olan cihazlarda sınıf doğrulama hatasını önleyerek baştan başlatma performansını iyileştirir. (aosp/1282118)
Sürüm 2.3.0-alpha01
4 Mart 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Yeni
ViewTreeLifecycleOwner.get(View)
API'si,View
örneği verildiğinde kapsayanLifecycleOwner
öğesini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Activity1.2.0-alpha01
ve Fragment1.3.0-alpha01
'a yükseltmeniz gerekir.findViewTreeLifecycleOwner
Kotlin uzantısılifecycle-runtime-ktx
'da kullanılabilir. (aosp/1182361, aosp/1182956) - Kotlin'de null olmayan olarak tanımlanmış bir
MutableLiveData
üzerindenull
değeri ayarlarken sizi uyaran yeni bir Lint kontrolü eklendi. Bu özellik,livedata-core-ktx
veyalivedata-ktx
yapıtları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092) lifecycle-runtime-testing
uygulayan ve iş parçacığı açısından güvenli değiştirilebilirLifecycle
sağlayan birTestLifecycleOwner
sunan yeni birLifecycleOwner
yapısı kullanıma sunuldu. (aosp/1242438)
Hata düzeltmeleri
lifecycle-runtime
yapısı artık benzersiz bir paket adına sahip. (aosp/1187196)
Sürüm 2.2.0
ViewModel-Savedstate 2.2.0 sürümü
5 Şubat 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
iptal edilir. 2.2.0 sürümü şu commit'leri içerir.
Lifecycle ViewModel SavedState artık diğer Lifecycle yapay ürünleriyle aynı sürümü paylaşıyor. 2.2.0
'nın davranışı, 1.0.0
'nın davranışıyla aynıdır.
Sürüm 2.2.0
22 Ocak 2020
androidx.lifecycle:lifecycle-*:2.2.0
iptal edilir. 2.2.0 sürümü şu commit'leri içerir.
2.1.0 sürümünden beri yapılan önemli değişiklikler
- Yaşam Döngüsü Eşrutin Entegrasyonu: Yeni
lifecycle-runtime-ktx
yapısı, Yaşam Döngüsü ile Kotlin eşrutinleri arasında entegrasyon sağlar.lifecycle-livedata-ktx
, eş yordamlardan yararlanmak için de genişletildi. Daha fazla bilgi için Kotlin eşyordamlarını mimari bileşenlerle kullanma başlıklı makaleye bakın. ViewModelProviders.of()
desteği sonlandırıldı:ViewModelProviders.of()
desteği sonlandırıldı. Fragment1.2.0
kullanırken aynı işlevi elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
oluşturucusunaFragment
veyaFragmentActivity
iletebilirsiniz.lifecycle-extensions
Yapay Nesne Kullanımdan Kaldırma: Yukarıda belirtilenViewModelProviders.of()
'nin kullanımdan kaldırılmasıyla birlikte bu sürüm,lifecycle-extensions
'deki son API'nin kullanımdan kaldırıldığını gösterir. Bu yapay nesne artık tamamen kullanımdan kaldırılmış olarak kabul edilmelidir.lifecycle-extensions
'in gelecekte2.3.0
sürümü olmayacağından,lifecycle-extensions
yerine 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ı kalmanızı önemle tavsiye ederiz.- Gradle Artımlı Ek Açıklama İşlemcisi: Lifecycle'ın ek açıklama işlemcisi varsayılan olarak artımlıdır.
Uygulamanız Java 8 programlama dilinde yazılmışsa
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
iptal edilir. 2.2.0-rc03 sürümü şu commit'leri içerir.
Hata düzeltmeleri
ViewModel
taklidiViewModelStore
içinde depolanıp daha sonra varsayılan fabrika ile sorgulandığında oluşan hata düzeltildi.Dispatchers.Main.immediate
kullanımını, ilgili yaşam döngüsü etkinliği sırasında eşzamanlı olarak çağrılacak şekildelaunchWhenCreated
ve benzer yöntemlerde düzeltin. (aosp/1156203)
Harici katkılar
- Düzeltmeye katkıda bulunan Anders Järleberg'e teşekkür ederiz. (aosp/1156203)
- Satır içi yürütme uygulamasını incelediği için Jetbrains'ten Vsevolod Tolstopyatov'a teşekkür ederiz.
Bağımlılık değişiklikleri
- Lifecycle Extensions artık Fragment
1.2.0-rc03
'a bağlıdır.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
iptal edilir. 2.2.0-rc02 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Kitaplığın ProGuard kurulumunda, hedef API 29'dan düşükse API 28 ve sonraki sürümlerin yüklü olduğu cihazları etkileyen bir hata düzeltildi. (b/142778206)
Sürüm 2.2.0-rc01
23 Ekim 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
iptal edilir. 2.2.0-rc01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
launchWhenCreated
ve ilgili yöntemlerin,Dispatchers.Main.immediate
yerineDispatchers.Main
kullanması nedeniyle ilişkili yaşam döngüsü yönteminden bir kare sonra çalışmasına neden olan sorun düzeltildi. (aosp/1145596)
Harici katkılar
- Düzeltmeye katkıda bulunan Nicklas Ansman'a teşekkür ederiz. (aosp/1145596)
Sürüm 2.2.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
iptal edilir. 2.2.0-beta01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Lifecycle 2.2.0-alpha05'te
ProcessLifecycleOwner
sıralamasında ve etkinliğin Android 10 cihazlarda başlatılmış ve devam ettirilmiş olarak taşınmasında ortaya çıkan regresyon düzeltildi.LifecycleOwner
(aosp/1128132) lifecycle-process
'nın2.0.0
veya2.1.0
sürümü kullanılırkenNullPointerException
'ye neden olan ve Lifecycle2.2.0-alpha05
'da ortaya çıkan gerileme düzeltildi. (b/141536990)
Sürüm 2.2.0-alpha05
18 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
iptal edilir. 2.2.0-alpha05 sürümü şu commit'leri içerir.
Hata düzeltmeleri
- Coroutine livedata builder'daki yarış durumu düzeltildi. b/140249349
Sürüm 2.2.0-alpha04
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
veliveData
'ın temel uygulaması artıkDispatchers.Main
yerineDispatchers.Main.immediate
kullanıyor. (b/139740492)
Harici katkılar
Dispatchers.Main.immediate
'a geçişi sağlayan Nicklas Ansman'a teşekkür ederiz. (aosp/1106073)
Sürüm 2.2.0-alpha03
7 Ağustos 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
ViewModelStoreOwner
uygulamaları artık isteğe bağlı olarakHasDefaultViewModelProviderFactory
uygulayarak varsayılan birViewModelProvider.Factory
sağlayabilir. Bu, 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şlevselliği elde etmek için yeniViewModelProvider(ViewModelStoreOwner)
oluşturucusunaFragment
veyaFragmentActivity
iletebilirsiniz. (aosp/1009889)
Sürüm 2.2.0-alpha02
2 Temmuz 2019
androidx.lifecycle:*:2.2.0-alpha02
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
API değişiklikleri
LiveDataScope.initialValue
yerine,liveData
bloğunun mevcut yayınlanan değerini izleyecek olanLiveDataScope.latestValue
kullanıldı.liveData
oluşturucusuna,timeout
parametresiniDuration
türünde alan yeni bir aşırı yükleme eklendi.
Sürüm 2.2.0-alpha01
7 Mayıs 2019
androidx.lifecycle:*:2.2.0-alpha01
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Bu sürümde, Lifecycle ve LiveData için Kotlin eşyordamlarını destekleyen yeni özellikler eklenmiştir. Bunlarla ilgili ayrıntılı belgelere buradan ulaşabilirsiniz.
ViewModel-SavedState 1.0.0 sürümü
Sürüm 1.0.0
22 Ocak 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
iptal edilir. Version 1.0.0 contains these commits.
1.0.0 sürümündeki önemli özellikler
- Yeni SavedStateHandle sınıfı eklendi. Bu sayede
ViewModel
sınıflarınız, kaydedilmiş duruma erişebilir ve bu duruma katkıda bulunabilir. Bu nesne,ViewModel
sınıfının oluşturucusunda alınabilir ve Fragments ile AppCompatActivity tarafından varsayılan olarak sağlanan fabrikalar,SavedStateHandle
öğesini otomatik olarak yerleştirir. - AbstractSavedStateViewModelFactory eklendi. Bu sayede
ViewModel
için özel fabrikalar oluşturabilir ve bunlaraSavedStateHandle
erişimi sağlayabilirsiniz.
ViewModel-Savedstate 1.0.0-rc03 sürümü
4 Aralık 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
iptal edilir. 1.0.0-rc03 sürümü şu commit'leri içerir.
Bağımlılık değişiklikleri
- Lifecycle ViewModel SavedState artık Lifecycle'a
2.2.0-rc03
bağlıdır.
Viewmodel-Savedstate Version 1.0.0-rc02
7 Kasım 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.
Bağımlılık değişiklikleri
- Artık yaşam döngüsüne
2.2.0-rc02
bağlıdır.
ViewModel-SavedState Version 1.0.0-rc01
23 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
, 1.0.0-beta01
sürümünde herhangi bir değişiklik yapılmadan yayınlanır. Sürüm 1.0.0-rc01 şu commit'leri içerir.
ViewModel-Savedstate Version 1.0.0-beta01
9 Ekim 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Hata düzeltmeleri
Activity.onActivityResult()
içinde SavedState ViewModel'e ilk kez erişmeninIllegalStateException
ile sonuçlanmasına neden olan sorun düzeltildi. (b/139093676)AbstractSavedStateViewModelFactory
kullanılırken yaşananIllegalStateException
sorunu düzeltildi. (b/141225984)
ViewModel-SavedState 1.0.0-alpha05 sürümü
18 Eylül 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
API değişiklikleri
SavedStateViewModelFactory
artık genişletilmiyorAbstractSavedStateViewModelFactory
veSavedStateHandle
yalnızca bunu isteyen ViewModel'ler için oluşturuluyor (aosp/1113593)
ViewModel-SavedState 1.0.0-alpha03 sürümü
7 Ağustos 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Zarar Veren Değişiklikler
lifecycle-viewmodel-savedstate
artıkfragment
'e bağlı değil ve ilgiliSavedStateViewModelFactory(Fragment)
ileSavedStateViewModelFactory(FragmentActivity)
oluşturucuları kaldırıldı. Bunun yerine, Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
ve Navigation2.2.0-alpha01
için varsayılan fabrika artıkSavedStateViewModelFactory
. (b/135716331)
ViewModel-SavedState 1.0.0-alpha02 sürümü
2 Temmuz 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Varsayılan değeri kabul eden
SavedStateHandle.getLiveData()
aşırı yüklemesi eklendi.
API Değişiklikleri
SavedStateVMFactory
,SavedStateViewModelFactory
olarak yeniden adlandırıldı.AbstractSavedStateVMFactory
,AbstractSavedStateViewModelFactory
olarak yeniden adlandırıldı.
ViewModel-Savedstate 1.0.0-alpha01 sürümü
13 Mart 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
iptal edilir. Bu ilk sürümün tam commit günlüğünü burada bulabilirsiniz.
Yeni özellikler
- Artık
ViewModels
, savedstate'e katkıda bulunabilir. Bunu yapmak için yeni kullanıma sunulan ViewModel'in factorySavedStateVMFactory
özelliğini kullanırsınız ve ViewModel'inizSavedStateHandle
object parametresini alan bir oluşturucuya sahip olmalıdır.
Sürüm 2.1.0
2.0.0 sürümünden beri yapılan önemli değişiklikler
- Yaşam döngüsü etkinlikleri akışının gerektiği durumlar için
LifecycleEventObserver
eklendi. Gizli birGenericLifecycleObserver
sınıfı yerine herkese açık bir API'dir. LiveData.observe
veTransformations.*
yöntemleri için ktx uzantıları eklendi.- Kaynak
LiveData
değeri değişene kadar değer yayınlamayan yeni bir LiveData nesnesi oluşturanTransformations.distinctUntilChanged
işlevi eklendi. ViewModel.viewModelScope
uzantı özelliği eklenerek ViewModel'lerde coroutine desteği eklendi.
Sürüm 2.1.0
5 Eylül 2019
androidx.lifecycle:lifecycle-*:2.1.0
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Sürüm 2.1.0-rc01
2 Temmuz 2019
androidx.lifecycle:*:2.1.0-rc01
, androidx.lifecycle:*:2.1.0-beta01
sürümünde herhangi bir değişiklik yapılmadan yayınlanır. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.lifecycle:*:2.1.0-beta01
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Yaşam döngüleri beta sürümüne yükseltildi: Önceki alfa sürümlerinde kullanıma sunulan API'ler (ör.
liveData
dönüştürme ve gözlem için uzantı işlevleri,ViewModel
özellik temsilcisiyle başlatma) kararlı hale getirildi ve değiştirilmeyecek.
Sürüm 2.1.0-alpha04
3 Nisan 2019
androidx.lifecycle:*:2.1.0-alpha04
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
API değişiklikleri
- Önemli değişiklik:
by viewModels()
veby activityViewModels()
işlevlerinin temelindeki API, doğrudanViewModelStore
öğesini destekleyecek şekilde değiştirildi. Artık yalnızcaViewModelStoreOwner
öğesi desteklenmiyor. (aosp/932932)
Sürüm 2.1.0-alpha03
13 Mart 2019
androidx.lifecycle:*:2.1.0-alpha03
iptal edilir. Bu sürüme dahil edilen tüm commit'lerin listesini burada bulabilirsiniz.
API değişiklikleri
ViewModelProvider.KeyedFactory
kaldırıldı.ViewModelProvider.Factory
'a ek olarak ikinci arayüz, Kotlin'de mülk temsilciliğiby viewmodels {}
gibi yeni özelliklerle iyi çalışmıyordu. (aosp/914133)
Sürüm 2.1.0-alpha02
30 Ocak 2019
androidx.lifecycle 2.1.0-alpha02
iptal edilir.
API değişiklikleri
LifecycleRegistry
artık kullanımdan kaldırılansetState()
yönteminin yerini alan birsetCurrentState()
yöntemi içeriyor. (aosp/880715)
Hata düzeltmeleri
- Kapsayan
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
iptal edilir.
Yeni özellikler
- Yaşam döngüsü etkinlikleri akışının gerektiği durumlar için
LifecycleEventObserver
eklendi. Gizli birGenericLifecycleObserver
sınıfı yerine herkese açık bir API'dir. LiveData.observe
veTransformations.*
yöntemleri için ktx uzantıları eklendi.Transformations.distinctUntilChanged
yöntemi eklendi. Kaynak LiveData değeri değişene kadar değer yaymayan yeni birLiveData
nesnesi oluşturur.- ViewModel'lerde Coroutine desteği:
ViewModel.viewModelScope
uzantı özelliği eklendi. create
yöntemindekey
veClass
alan ViewModels için fabrika olanViewModelProvider.KeyedFactory
eklendi.
Sürüm 2.0.0
Sürüm 2.0.0
21 Eylül 2018
Lifecycle 2.0.0
, ViewModel'de 2.0.0-rc01
tarafından düzeltilen bir hata ile yayınlandı.
Hata Düzeltmeleri
- Yapıcıları yanlışlıkla kaldıran ViewModel proguard kuralı düzeltildi. b/112230489
Sürüm 2.0.0-beta01
2 Temmuz 2018
Hata Düzeltmeleri
- Yalnızca uygulamaları tutmak için LifecycleObserver proguard kuralı düzeltildi, alt arayüzler tutulmuyor b/71389427
- Karartma ve küçültmeye izin vermek için ViewModel proguard kuralları düzeltildi.
AndroidX öncesi sürümler
Aşağıdaki Lifecycle'ın AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Sürüm 1.1.1
21 Mart 2018
Yalnızca küçük bir değişiklik var: android.arch.core.util.Function
, arch:runtime
konumundan arch:common
konumuna taşınıyor. Bu sayede, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common
'da) kullanılabilir.
lifecycle:common
, lifecycle:runtime
öğesinin bağımlısı olduğundan bu değişiklik lifecycle:runtime
öğesini doğrudan etkilemez. Yalnızca Paging gibi doğrudan lifecycle:common
öğesine bağlı olan modüller etkilenir.
Sürüm 1.1.0
22 Ocak 2018
Paketleme Değişiklikleri
Artık yeni ve çok daha küçük bağımlılıklar kullanılabilir:
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
veya destekFragment
kullanın. @NonNull
ek açıklaması,ViewModelProviders
veViewModelStores
adlı öğelere eklendiViewModelProviders
oluşturucusunun desteği sonlandırıldı. Lütfen statik yöntemlerini doğrudan kullanın.ViewModelProviders.DefaultFactory
kullanımdan kaldırıldı. LütfenViewModelProvider.AndroidViewModelFactory
kullanın.ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
veAndroidViewModel
örnekleri oluşturmaya uygun bir statikFactory
almak için statikViewModelProvider.AndroidViewModelFactory.getInstance(Application)
yöntemi eklendi.ViewModel