Yaşam döngüsü

Yaşam döngüsü bilincine sahip bileşenler, etkinlikler ve parçalar gibi başka bir bileşenin yaşam döngüsü durumundaki bir değişikliğe yanıt olarak işlemler gerçekleştirir. Bu bileşenler, daha iyi düzenlenmiş ve genellikle daha hafif, bakımı daha kolay kodlar oluşturmanıza yardımcı olur.

Bu tabloda, androidx.lifecycle grubundaki tüm yapı taşları listelenir.

Yapı Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
lifecycle-* 2.8.7 - - 2.9.0-alpha08
lifecycle-viewmodel-compose 2.8.7 - - 2.9.0-alpha08
Bu kitaplık en son 11 Aralık 2024'te güncellenmiştir.

Bağımlılıkları beyan etme

Lifecycle'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.

Uygulamanızın veya modülünüzün build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 2.9

Sürüm 2.9.0-alpha08

11 Aralık 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha08 yayınlanır. 2.9.0-alpha08 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Test altındaki ViewModel ve ilişkili tüm bileşenleri yeniden oluşturarak sistem işleminin sona ermesini simüle etmek için ViewModelScenario.recreate ekleyin. (Id6a69, b/381063087)
  • İlgili findViewTree API'leri aracılığıyla alınan LifecycleOwner ve ViewModelStoreOwner örnekleri artık bir görünümün ayrı ebeveynleri (ör. ViewOverlay) aracılığıyla çözülebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için çekirdeğin sürüm notlarına veya ViewTree.setViewTreeDisjointParent adresindeki dokümanlara bakın. (I800f4)

API Değişiklikleri

  • Adlandırmaları ve paket organizasyonunu SavedStateRegistryOwnerDelegate (I8c135, b/376026744) ile daha tutarlı hale getirin.

Hata Düzeltmeleri

  • Bu kitaplıkta artık tür kullanımı olan JSpecify nullness ek açıklamaları kullanılmaktadır. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenlerini kullanmalıdır: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ie4340, b/326456246)
  • ViewModel.onCleared dokümanı temizleme sırası. (I586c7, b/363984116)

Sürüm 2.9.0-alpha07

13 Kasım 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha07 yayınlanır. 2.9.0-alpha07 sürümü bu taahhütleri içerir.

Kotlin Çok Platformlu Uyumluluk

  • Yaşam döngüsü ViewModel SavedState artık KMP ile uyumludur. Bu sayede SavedStateHandle'ü ortak kodda kullanabilirsiniz. (Ib6394, b/334076622)

KotlinX Serileştirme Desteği

  • SavedState 1.3.0-alpha05'e eklenen KotlinX Serialization desteğiyle, @Serializable sınıflarını bir SavedStateHandle içinde depolamayı ve bu sınıfların işlem sona erdiğinde ve yeniden oluşturulduğunda otomatik olarak geri yüklenmesini kolaylaştırmak için saved adlı bir üşengeç mülk temsilcisi kullanıma sunduk. saved temsilcisinin, erişilene kadar init lambda'sını çağırmayacağını veya SavedStateHandle'ye hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I47a88, b/376026744)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyViewModel(handle: SavedStateHandle) : ViewModel() {
        var person by handle.saved { Person("John", "Doe") }
    
        fun onPersonChanged(person: Person) {
            this.person = person
        }
    }
    

API Değişiklikleri

  • MutableStateFlow döndürmek için getMutableStateFlowSavedStateHandle'a ekleyin. Bu yeni işlev anahtara özeldir ve getLiveData ile kullanılamaz. Aynı duruma erişmek için ikisini birden kullanmayı denerseniz bir istisna atılır. (I04a4f, b/375408415)

Sürüm 2.9.0-alpha06

30 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha06 yayınlanır. 2.9.0-alpha06 sürümü bu taahhütleri içerir.

Davranış Değişiklikleri

  • Lifecycle.DESTROYED durumu sonlandırıcıdır ve bir Lifecycle'ı bu durumdan başka bir duruma taşıma girişimi artık IllegalStateException ile sonuçlanacaktır. (I116c4, b/370577987)
  • SavedStateHandle artık döndürülen Bundle değerinin boş olduğu SavedStateProvider.saveState() öğelerini içermiyor. (I910b5, b/370577987)

Hata Düzeltmeleri

  • Lifecycle DESTROYED olduğunda Lifecycle.eventFlow artık doğru şekilde tamamlanıyor (I293b2, b/374043130)

Sürüm 2.9.0-alpha05

16 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha05, önemli bir değişiklik içermeden yayınlandı. 2.9.0-alpha05 sürümü bu taahhütleri içerir.

Sürüm 2.9.0-alpha04

2 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha04 yayınlanır. 2.9.0-alpha04 sürümü bu taahhütleri içerir.

Kotlin Çok Platformlu

  • lifecycle-viewmodel-savedstate modülü, SavedStateHandle gibi API'lerin gelecekteki bir sürümde ortak kaynak grubunda kullanıma sunulmasına hazırlanmak için KMP uyumlu olacak şekilde yapılandırıldı. (I503ed, I48764, b/334076622)

Sürüm 2.9.0-alpha03

18 Eylül 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha03 yayınlanır. 2.9.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Bağımlılık Güncellemeleri

Sürüm 2.9.0-alpha02

4 Eylül 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 yayınlanır. 2.9.0-alpha02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Yaşam döngüsü 2.8.5 bölümünde: androidx.lifecycle.ReportFragment ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)

Harici Katkı

  • androidx.compose.ui.platform.LocalLifecycleOwner'ü ortak kaynak kümesine (KMP) taşıyın. Katkıda bulunduğu için JetBrains'den Ivan Matkov'a teşekkürler. (8cd5d03)
  • Yaşam döngüsü 2.8.5: SavedStateHandle.saveable` uzantı temsilcisi artık null değerleri destekler. Katkıda bulunduğunuz için teşekkürler Roman Kalukiewicz. (0d78ea6)

Sürüm 2.9.0-alpha01

7 Ağustos 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 yayınlanır. 2.9.0-alpha01 sürümü bu taahhütleri içerir.

Kotlin Çok Platformlu

  • lifecycle-testing artık KMP ile uyumlu. (Iea41e)
  • linuxArm64 kotlin çok platformlu hedefi için destek ekleme (I139d3, b/338268719)

Yeni Özellikler

  • ViewModel'leri tek başına test etmek için onCleared (tüm platformlar) ve SavedStateHandle (yalnızca Android) desteğiyle ViewModelScenario sınıfı sağlayan yeni bir androidx.lifecycle:lifecycle-viewmodel-testing KMP yapısını kullanabilirsiniz. (337f68d, c9b3409, 9799a95c, b/264602919)
  • ViewModelProvider ile ViewModel oluşturma işlemi artık iş parçacığı açısından güvenlidir; @MainThread ek açıklamaları kaldırıldı. (Ifd978, b/237006831)

API Değişiklikleri

  • Anonim CreationExtras.Key nesnelerinin oluşturulmasını basitleştirmek için CreationExtras.Key() fabrika işlevini ekleyin. (I970ee)
  • CreationExtras artık Kotlin'de içeriklerin yerel dilde değiştirilmesini sağlamak için haritaya benzer operatör aşırı yüklemelerini içeriyor. in, += ve +'nin CreationExtras ile kullanılmasına olanak tanır. (Ib4353)
  • CreationExtras artık equals, hashCode ve toString yöntemlerini uygulamaktadır. (Ib4353)
  • NewInstanceFactory artık JVM masaüstü ve Android hedeflerinde kullanılabilir. (d3d0892)
  • Kotlin dili sürüm 2.0'da temel uygulamayı güvenli bir şekilde göstermek için satır içi uzantı özelliği (I39df2)

Hata Düzeltmeleri

  • Yeni platform API'lerine erişim manuel olarak belirtilmemiştir. Bunun nedeni, AGP 7.3 veya sonraki sürümlerde R8 kullanıldığında (ör. R8 3.3 sürümü) ve AGP 8.1 veya sonraki sürümlerde tüm derlemelerde (ör. D8 8.1 sürümü) API modelleme aracılığıyla otomatik olarak gerçekleşmesidir. AGP kullanmayan müşterilerin D8 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (If6b4c, b/345472586)

Sürüm 2.8

Sürüm 2.8.7

30 Ekim 2024

androidx.lifecycle:lifecycle-*:2.8.7 yayınlanır. 2.8.7 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • androidx.compose.ui.platform.LocalLifecycleOwner artık ortak kaynak kümesinde (KMP) kullanılabilir. (6a3f5b3)
  • lifecycle-runtime-compose: desktop yapı kaldırıldı ve -jvmStubs ile -linuxx64Stubs yapıları eklendi. Bu hedeflerin hiçbiri kullanılmak için tasarlanmamıştır. Bunlar, Jetbrains Compose çalışmalarına yardımcı olan yer tutuculardır. (6a3f5b3)

2.8.6 sürümü

18 Eylül 2024

androidx.lifecycle:lifecycle-*:2.8.6 yayınlanır. 2.8.6 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NullSafeMutableLiveData lint hatası, akıllı yayınlar için desteği iyileştirerek yanlış pozitifleri önledi. (85fed6, b/181042665)

Bağımlılık Güncellemeleri

Sürüm 2.8.5

4 Eylül 2024

androidx.lifecycle:lifecycle-*:2.8.5 yayınlanır. 2.8.5 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • androidx.lifecycle.ReportFragment ProGuard kurallarını karartmaya izin verecek şekilde güncelleyin . (ff898e1)

Harici Katkı

  • SavedStateHandle.saveable uzantı temsilcisi artık null değerleri destekliyor. Katkıda bulunduğunuz için teşekkürler Roman Kalukiewicz. (0d78ea6)

Sürüm 2.8.4

24 Temmuz 2024

androidx.lifecycle:lifecycle-*:2.8.4 yayınlanır. 2.8.4 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • LiveData.asFlow() artık döndürülen akışta LiveData üzerinde önceden ayarlanmış bir değer alındıktan hemen sonra akışın tamamlandığı durumları (örneğin, take(1) kullanılırken) doğru şekilde ele alıyor. (I9c566)
  • Lifecycle*Effect tamamlama işlemi artık idempotent (yani, yaşam döngüsü durdurulduğu için onStopOrDispose çağrıldıysa yaşam döngüsü tekrar STARTED durumuna dönmediği sürece, kullanımdan kaldırıldığında ikinci kez çağrılmaz). (I5f607, b/352364595)

Sürüm 2.8.3

1 Temmuz 2024

androidx.lifecycle:lifecycle-*:2.8.3 yayınlanır. 2.8.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Kod küçültme kullanılırken Lifecycle 2.8'in Compose 1.6.0 ve önceki sürümlerle geriye dönük uyumluluğuyla ilgili bir sorun düzeltildi. (aosp/3133056, b/346808608)

Sürüm 2.8.2

12 Haziran 2024

androidx.lifecycle:lifecycle-*:2.8.2 yayınlanır. 2.8.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Lifecycle 2.8.X'in Compose 1.6.X veya önceki sürümlerle kullanılmasıyla ilgili CompositionLocal LocalLifecycleOwner not present hataları düzeltildi. Artık Lifecycle 2.8.2'yi herhangi bir Compose sürümüyle herhangi bir geçici çözüm uygulamadan kullanabilirsiniz. (aosp/3105647, b/336842920)
  • ViewModelProvider, compileOnly yaşam döngüsü bağımlılıkları önceki sürümlerini 2.8 ve sonraki sürümlerle karıştırırken artık kilitlenmeyecek. Böylece LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltildi. (I80383, b/341792251)

Sürüm 2.8.1

29 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.1 yayınlanır. 2.8.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • lifecycle-viewmodel-compose artık yalnızca compose-runtime ile ortak bağımlılığa sahiptir. compose-ui ile ortak bağımlılığı kaldırılmıştır. Android yapıları, uyumluluk için compose-ui değerini korur. (aosp/3079334, b/339562627)
  • ViewModel'ın mülk temsilcilerini kullanan saveable entegrasyonu artık otomatik olarak oluşturulan anahtarın bir parçası olarak sınıf adını kullanıyor. Bu sayede, birden fazla sınıf aynı SavedStateHandle'yi kullandığında çakışmalar önleniyor. (aosp/3063463)

2.8.0 sürümü

14 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0 yayınlanır. 2.8.0 sürümü bu taahhütleri içerir.

2.7.0 sürümünden beri yapılan önemli değişiklikler

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzünden lifecycle-runtime-compose'e taşındı.
  • lifecycle-runtime-compose yapıları artık LifecycleOwner belirli bir Lifecycle.State değerinin altına düştüğünden sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanıza olanak tanıyan dropUnlessResumed ve dropUnlessStarted API'lerini içeriyor. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerini işlemekten kaçınmak için bu yöntem Gezinme Oluşturma ile kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope artık geçersiz kılınabilir bir oluşturucu parametresi olduğundan kendi dağıtıcınızı ve SupervisorJob()'ınızı eklemenize veya runTest içinde bulunan backgroundScope'yi kullanarak varsayılan değeri geçersiz kılmanıza olanak tanır. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • ViewModel, Kotlin'de yeniden yazıldı ve artık Closeable yerine AutoClosable kullanıyor. Artık AutoCloseable nesnelerini getCloseable() üzerinden almalarını sağlayan bir key ile eklemeyi destekler.

  • LifecycleStartEffect ve LifecycleResumeEffect API'lerinin anahtar olmadan çağrılması artık hata olarak değerlendiriliyor. Bu, bu API'lerin yansıttığı DisposableEffect API'siyle aynı kurala dayanır.

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData), LiveData.toPublisher(lifecycleOwner) için kullanımdan kaldırıldı.

  • lifecycle-livedata-core-ktx kotlin uzantıları artık lifecycle-livedata-core modülüne taşındı.

  • NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden yapılandırıldı.

Yaşam döngüsü Kotlin çok platformlu uyumluluğu

Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry'deki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor.

Etkilenen yapılardır:

  • lifecycle-common, çoğu API'yi common'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.
  • lifecycle-runtime, çoğu API'yi common'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.
  • lifecycle-runtime-ktx artık boştur ve tüm API'ler lifecycle-runtime'a taşınmıştır.
  • lifecycle-runtime-compose, tüm API'leri common'e taşır ve androidx.compose'nin çok platformlu desteğine uygun bir Android yapısını dağıtır.

ViewModel Kotlin Çoklu Platform Uyumluluğu

lifecycle-viewmodel yapıları ve ViewModel, ViewModelStore, ViewModelStoreOwner ve ViewModelProvider gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor.

Bu değişiklikle uyumlu olmak için ViewModelProvider üzerinde java.lang.Class<T> alan yöntemler gibi yöntemler artık kotlin.reflect.KClass<T> alan eşdeğer bir yönteme sahip.

Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırıldığında birkaç önemli değişiklik vardır:

  • ViewModelProvider örneği oluşturma işlemi artık doğrudan oluşturucunun çağrılması yerine ViewModelProvider.create() yöntemleri aracılığıyla gerçekleştiriliyor.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel fabrikaların ViewModelProvider.Factory'ten türemesi ve CreationExtras alan create yöntemini kullanması veya viewModelFactory Kotlin DSL'sini kullanması önerilir.
  • JVM dışı platformlarda özel fabrika olmadan ViewModelProvider kullanılması UnsupportedOperationException ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmazsa parametre içermeyen ViewModel kurucusu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext Linux).

Etkilenen yapılardır:

  • lifecycle-viewmodel, çoğu API'yi common'e taşır ve Android'e ek olarak jvm ve iOS'i destekler.
  • lifecycle-viewmodel-ktx artık boştur ve tüm API'ler lifecycle-viewmodel'a taşınmıştır.
  • lifecycle-viewmodel-compose, tüm API'leri common'e taşır ve androidx.compose'nin çok platformlu desteğine uygun bir Android yapısını dağıtır.

Davranış Değişiklikleri

  • InitializerViewModelFactory (viewModelFactory oluşturucu işlevi dahil), aynı clazz: KClass<VM : ViewModel> ile bir initializer zaten eklenmişse artık bir IllegalArgumentException oluşturur. (Ic3a36)

Bilinen Sorunlar

Sürüm 2.8.0-rc01

1 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 yayınlanır. 2.8.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • lifecycle-common sınıfları için temel profilin düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artık lifecycle-runtime AAR'da paketlenir. (aosp/3038274, b/322382422)
  • Bir ViewModel'e bağlı AutoCloseable örneklerinin nasıl temizleneceğiyle ilgili yanlışlıkla yapılan bir sıralama değişikliği düzeltildi. Önceki sıralama (addCloseable(String, AutoCloseable), ardından addClosable(AutoCloseable), ardından onCleared()) geri yüklendi. (aosp/3041632)
  • Yerel ve JVM masaüstü ortamları için viewModelScope'ün varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)

Harici Katkı

  • JVM masaüstünde ana iş parçacığı kontrolünü iyileştirdiğiniz için teşekkürler Victor Kropp. (aosp/3037116)

Sürüm 2.8.0-beta01

17 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 yayınlanır. 2.8.0-beta01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • lifecycle-runtime-compose yapıları artık Kotlin Multiplatform ile uyumlu. Kodu common'a taşındı ve androidx.compose için çok platformlu desteğiyle eşleşen bir Android yapısı yayınlandı. (If7a71, I4f4a0, b/331769623)

Sürüm 2.8.0-alpha04

3 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 yayınlanır. 2.8.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose yapıları artık Kotlin Multiplatform ile uyumlu. Kodu common'a taşındı ve androidx.compose'nin çok platformlu desteğine uygun bir Android yapısı yayınlandı. Bu değişikliği karşılamak için Kompozit viewModel yöntemi artık java.lang.Class'ye ek olarak KClass değerini de kabul ediyor. (b/330323282)

Hata Düzeltmeleri

  • NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden yapılandırıldı. (I2d8c1, Iafb18, I03463, I7ecef)

Bağımlılık güncellemesi

  • lifecycle-viewmodel-compose yapı artık Compose 1.6.0'a bağlıdır.
  • Yaşam döngüsü artık Profil Yükleyici 1.3.1'e bağlıdır.

Sürüm 2.8.0-alpha03

20 Mart 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 yayınlanır. 2.8.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • ViewModel.viewModelScope artık geçersiz kılınabilir bir oluşturucu parametresi olduğundan kendi dağıtıcınızı ve SupervisorJob()'ınızı eklemenize veya runTest içinde bulunan backgroundScope'yi kullanarak varsayılan değeri geçersiz kılmanıza olanak tanır. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

Kotlin Çok Platformlu Uyumluluk

lifecycle-viewmodel yapıları ve ViewModel, ViewModelStore, ViewModelStoreOwner ve ViewModelProvider gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor. (b/214568825)

Bu değişiklikle uyumlu olmak için ViewModelProvider üzerinde java.lang.Class<T> alan yöntemler gibi yöntemler artık kotlin.reflect.KClass<T> alan eşdeğer bir yönteme sahip.

Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyi ile ortak API yüzeyi karşılaştırıldığında birkaç önemli değişiklik vardır:

  • ViewModelProvider örneği oluşturma işlemi artık doğrudan oluşturucunun çağrılması yerine ViewModelProvider.create() yöntemleri aracılığıyla gerçekleştiriliyor.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel fabrikaların ViewModelProvider.Factory'ten türemesi ve CreationExtras alan create yöntemini kullanması veya viewModelFactory Kotlin DSL'sini kullanması önerilir.
  • JVM dışı platformlarda özel fabrika olmadan ViewModelProvider kullanılması UnsupportedOperationException ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmazsa parametre içermeyen ViewModel kurucusu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext Linux).

Davranış Değişiklikleri

  • InitializerViewModelFactory (viewModelFactory oluşturucu işlevi dahil) artık aynı clazz: KClass<VM : ViewModel> değerine sahip bir initializer eklenmişse bir IllegalArgumentException oluşturur. (Ic3a36)

Hata Düzeltmeleri

  • ViewModel.getCloseable artık yinelenen anahtarları yönetiyor: key'ın ilişkili bir AutoCloseable kaynağı varsa eski kaynak değiştirilir ve hemen kapatılır. (Ibeb67)
  • ViewModel öğesinin viewModelScope özelliğine erişim artık iş parçacığı açısından güvenlidir. (If4766, b/322407038)

Harici Katkı

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzünden lifecycle-runtime-compose'e taşındı. Katkıda bulunduğunuz için teşekkürler Jake Wharton. (I6c41b, b/328263448)

Sürüm 2.8.0-alpha02

21 Şubat 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 yayınlanır. 2.8.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • LifecycleOwner belirli bir Lifecycle.State değerinin altına düştüğünde bile gerçekleşen tıklama veya diğer etkinlikleri bırakmanıza olanak tanıyan dropUnlessResumed ve dropUnlessStarted API'leri eklendi. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerini işlemekten kaçınmak için bu yöntem, Gezinme Oluşturma ile kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Kotlin Dönüşümleri

  • ViewModel artık Kotlin ile yazılmıştır (I16f26, b/214568825)
  • lifecycle-viewmodel-ktx kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Id787b, b/274800183)
  • lifecycle-runtime-ktx kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (Ic3686, b/274800183)
  • lifecycle-livedata-core-ktx kotlin uzantıları artık temel yaşam döngüsü modülüne taşındı. (I54a3d, b/274800183)

Kotlin Çok Platformlu Uyumluluk

  • Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry'deki temel yaşam döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda yayınlanıyor. (b/317249252)

API Değişiklikleri

  • LifecycleStartEffect ve LifecycleResumeEffect API'lerinin anahtar olmadan çağrılması artık hata olarak değerlendiriliyor. Bu, bu API'lerin yansıttığı DisposableEffect API'siyle aynı kurala dayanır. (Ib0e0c, b/323518079)
  • ViewModel artık Closeable yerine AutoCloseable kullanıyor. Bu değişiklik geriye dönük uyumludur. (I27f8e, b/214568825)
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData), LiveData.toPublisher(lifecycleOwner) için kullanımdan kaldırıldı. (Iabe29, b/262623005)

Harici Katkı

  • Jetbrains'den Ivan Matkov'a, yaşam döngüsünü Kotlin Multiplatform'a taşımamıza yardımcı olduğu için teşekkür ederiz. (aosp/2926690, I0c5ac, If445d)

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 yayınlanır. 2.8.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • ViewModel artık getCloseable() üzerinden alınmasına olanak tanıyan bir key ile Closeable nesneleri eklemeyi destekliyor. (I3cf63)

Sürüm 2.7

2.7.0 sürümü

10 Ocak 2024

androidx.lifecycle:lifecycle-*:2.7.0 yayınlanır. 2.7.0 sürümü bu taahhütleri içerir.

2.6.0 sürümünden beri yapılan önemli değişiklikler

  • TestLifecycleOwner artık, durum değişikliğinin ve tüm LifecycleObserver geri çağırmalarının döndürülmeden önce tamamlanmasını sağlayan bir askıya alma işlevi setCurrentState() içeriyor. currentState mülkünün doğrudan ayarlanmasının aksine, bu yöntemde runBlocking kullanılmaz. Bu sayede, runTest tarafından sağlanan bir coroutine gibi bir coroutine içinde güvenli bir şekilde kullanılabilir.
  • map ve switchMap işlevlerinin LiveData uzantıları artık distinctUntilChanged işlevinin davranışını yansıtıyor. LiveData işlevinin value özelliği ayarlanmışsa döndürülen LiveData işlevinin value özelliğini doldurmak için map/switchMap işlevi hemen çağrılır. Bu, ilk değerin ilk bileşimin bir parçası olarak ayarlanmasını sağlar (observeAsState() ile kullanıldığında), ancak gözlem davranışını değiştirmez. LiveData kaynağındaki güncelleme değerleri, yalnızca LiveData'u gözlemlemeye başladıktan sonra uygulanmaya devam eder.
  • Bu sürümde, işlem sona erip yeniden oluşturulduktan sonra SavedStateHandle'ün özel Parcelable sınıflarını düzgün şekilde geri yüklememesi sorunu düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde bir dizili dizi manuel olarak oluşturulur) ve get, getLiveData ve getStateFlow ile ilgili dokümanlar artık bu sınırlamayı özellikle belirtmektedir.
  • LifecycleObserver ile ilişkili ProGuard saklama kuralları kaldırıldı. Bu, API'leri yansıma yoluyla kullanmak isteyen korumalı kodun (ör. desteği sonlandırılan @OnLifecycleEvent ek açıklamasını kullanarak) belirli kullanım alanı için kendi koruma kurallarını sağlaması gerektiği anlamına gelir.

Yaşam Döngüsü Etkinliği Gözlemlenebilirliği

  • LifecycleEventObserver kullanmaya alternatif olarak artık Lifecycle.asFlow() uzantı yöntemi aracılığıyla Lifecycle.Event için Flow gözlemleyebilirsiniz.
  • Jetpack Compose kullanıcıları artık Lifecycle.Event'a dayalı Compose yan etkilerini çalıştırmak için LifecycleEventEffect kullanabilir.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Jetpack Compose kullanıcıları, sırasıyla başlatılan ve durdurulan ile devam ettirilen ve duraklatılan etkinliklerin çiftlerini işlemek için LifecycleStartEffect ve LifecycleResumeEffect kullanabilir. Bu API, DisposableEffect API'sini yansıtır ve durum yükselirken yapılan değişikliğin, durum düşerken geri alınması gereken durumlar için uygundur.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

Daha fazla bilgi için Yaşam döngüsü etkinliklerinde kod çalıştırma başlıklı makaleyi inceleyin.

Yaşam Döngüsü Durumu Gözlemlenebilirliği

  • Mevcut Lifecycle.State, artık Lifecycle.currentStateFlow mülkü aracılığıyla gözlemlenebilir. Bu mülk, value'ın mevcut Lifecycle.State olduğu bir StateFlow döndürür.
  • Jetpack Compose kullanıcıları, Lifecycle.State'u doğrudan Compose State olarak göstermek için Lifecycle.currentStateAsState() uzantısını kullanabilir. Bu, lifecycle.currentStateFlow.collectAsState() ile eşdeğerdir (ve daha kısa bir alternatiftir).

Daha fazla bilgi için Döngü yaşam durumu bilgilerini akışlarla toplama başlıklı makaleyi inceleyin.

Sürüm 2.7.0-rc02

13 Aralık 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 yayınlanır. 2.7.0-rc02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • İşlem sona erip yeniden oluşturulduktan sonra SavedStateHandle'ün özel Parcelable sınıflarını düzgün şekilde geri yüklememesi sorunu düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde bir dizili dizi manuel olarak oluşturulur) ve get, getLiveData ve getStateFlow ile ilgili dokümanlar artık bu sınırlamayı özellikle belirtmektedir. (I0b55a)

Sürüm 2.7.0-rc01

15 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc01 yayınlanır. 2.7.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • LifecycleStartEffect ve LifecycleResumeEffect, LifecycleOwner değiştiğinde artık efekt bloğunu doğru şekilde kaldırıp yeniden oluşturuyor. (Ia25c6)

Sürüm 2.7.0-beta01

1 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01, herhangi bir değişiklik yapılmadan yayınlanır. 2.7.0-beta01 sürümü bu taahhütleri içerir.

  • Beta sürüm yükseltmesi. Bu sürümde önemli bir değişiklik yok.

Sürüm 2.7.0-alpha03

18 Ekim 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 yayınlanır. 2.7.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • lifecycle-runtime-testing artık bir coroutine içindeyken currentState alanını kullanarak TestLifecycleOwner öğesinin Lifecycle.State değerini ayarlamayı önlemek için yeni bir Lint denetimi içeriyor. Lint denetimi artık setCurrentState'ü askıya almayı öneriyor. Bu sayede Lifecycle.State, engellenmeden ayarlanabilir. (Icf728, b/297880630)

Hata Düzeltmeleri

  • Hem ilk çağrıda hem de sonraki çağrıda aynı LiveData örneğinin döndürülmesinin, LiveData örneğinin kaynak olarak eklenmesini engellediği LiveData.switchMap ile ilgili sorun düzeltildi. (Ibedcba7)

Sürüm 2.7.0-alpha02

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 yayınlanır. 2.7.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • TestLifecycleOwner artık kullanıcılara TestLifecycleOwnerrunTest tarafından sağlanan bir iş parçacığı içinde kullanma seçeneği sunmak için setCurrentState() askıya alma işlevini içeriyor. (I329de, b/259344129)

API Değişiklikleri

  • lifecycle-livedata-ktx modüllerindeki tüm dosyalar ana lifecycle-livedata modülüne taşındı. (I10c6f, b/274800183)

Davranış Değişiklikleri

  • LiveData.map() ve LiveData.switchMap() uzantıları artık önceki LiveData için bir değer ayarlanmışsa döndürülen LiveData'ın value değerini ayarlayarak Jetpack Compose'da elde edilen LiveData'nın ilk kompozisyonda doğru durumda olmasını sağlar. (I91d2b, b/269479952)
  • ViewModel'nin addCloseable(), ViewModel onCleared() için zaten bir arama aldıysa Closeable'yi hemen kapatır. (I4712e, b/280294730)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.6.2: Durum geri yüklenirse, save() üst öğe SavedStateRegistry'e kaydedilmeden çağrılır ve ardından durum tekrar geri yüklenirse SavedStateHandle'ın işlem sona erdikten sonra doğru şekilde geri yüklenmemesi sorunu düzeltildi. Bu işlem, rememberSaveable ile Gezinme Oluşturma'nın NavHost arasındaki etkileşimi düzeltir. (aosp/2729289)

Sürüm 2.7.0-alpha01

26 Temmuz 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha01 yayınlanır. 2.7.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Lifecycle.State artık Lifecycle.currentStateFlow aracılığıyla Compose-observable oldu. Bu işlev, value'ın mevcut Lifecycle.State olduğu bir StateFlow döndürür. (Ib212d, b/209684871)
  • Lifecycle.Event'ler artık Lifecycle.asFlow(). ile Flow olarak gözlemlenebilir (If2c0f, b/176311030)
  • Hem Lifecycle.Event.ON_RESUME hem de Lifecycle.Event.ON_PAUSE etkinlik geri çağırmalarına göre SideEffect oluşturma işlemlerini çalıştırmak için LifecycleResumeEffect API eklendi. (I60386, b/235529345)
  • Lifecycle.Event.ON_START ve Lifecycle.Event.ON_STOP etkinlik geri çağırmalarına dayalı Oluştur SideEffect'ları çalıştırmak için LifecycleStartEffect API eklendi. (I5a8d1, b/235529345)
  • Lifecycle.Event'ye dayalı SideEffect oluşturma işlemlerini çalıştırmak için LifecycleEventEffect API eklendi. (Ic9794, b/235529345)
  • Lifecycle.State'u doğrudan Oluştur State olarak göstermek için Lifecycle.collectAsState() uzantısı eklendi. Bu, lifecycle.currentStateFlow.collectAsState() ile eşdeğerdir (ve daha kısa bir alternatiftir). (I11015, b/235529345)

Hata Düzeltmeleri

  • LiveData.distinctUntilChanged() uzantısı artık önceki LiveData için ayarlanmış bir değer varsa döndürülen LiveData değerini value olarak ayarlar. Bu, gözlem davranışını değiştirmez. LiveData kaynağından gelen güncellenmiş değerler, yalnızca distinctUntilChanged() kaynağından döndürülen LiveData değerini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)
  • LifecycleObserver ile ilişkili proguard keep kuralları kaldırıldı. Bu, API'leri yansıma yoluyla kullanmak isteyen korumalı kodun, belirli kullanım alanı için kendi koruma kurallarını sağlaması gerektiği anlamına gelir. (Ia12fd)

Sürüm 2.6

Sürüm 2.6.2

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.6.2 yayınlanır. 2.6.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Durum geri yüklenirse, save() üst öğe SavedStateRegistry'ye kaydedilmeden çağrılır ve ardından durum tekrar geri yüklenirse SavedStateHandle'ün işlem sona erdikten sonra doğru şekilde geri yüklenmemesi sorunu düzeltildi. Bu işlem, rememberSaveable ile Gezinme Oluşturma'nın NavHost arasındaki etkileşimi düzeltir. (aosp/2729289)

Sürüm 2.6.1

22 Mart 2023

androidx.lifecycle:lifecycle-*:2.6.1 yayınlanır. 2.6.1 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

2.6.0 sürümü

8 Mart 2023

androidx.lifecycle:lifecycle-*:2.6.0 yayınlanır. 2.6.0 sürümü bu taahhütleri içerir.

2.5.0 sürümünden beri yapılan önemli değişiklikler

  • LiveData artık LiveData üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni bir isInitialized özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı için liveData.value'nin null döndürmesi ile açık bir null değeri döndürmesi arasındaki farkı ayırt etmenize olanak tanır.
  • MediatorLiveData artık ilk değeri ayarlamak için bir kurucu içeriyor.
  • collectAsStateWithLifecycle() için StateFlow ve Flow'ye, akışlardan veri toplayan ve en son değerini yaşam döngüsü bilinciyle Oluşturma Durumu olarak temsil eden yeni bir uzantı eklendi.
  • Duraklatma dağıtıcısının kullanılması bazı durumlarda kaynakların boşa harcanmasına yol açabileceğinden Lifecycle.launchWhenX yöntemleri ve Lifecycle.whenX yöntemlerinin desteği sonlandırılmıştır. Lifecycle.repeatOnLifecycle kullanılması önerilir. Çalışmayı tek seferlik askıya alma hakkında daha fazla bilgi için lütfen bunun neden güvenli olmadığını açıklayan bu açıklamaya bakın.
  • Kotlin Dönüşümü: Çok sayıda yaşam döngüsü sınıfı Kotlin'e dönüştürüldü. Dönüştürülen tüm sınıflar, önceki sürümlerle ikili uyumluluğunu korur. Aşağıdaki sınıflarda, Kotlin'de yazılmış sınıflar için kaynak uyumsuz değişiklikler var: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

Aşağıdaki tabloda, yaşam döngüsünün yeni sürümü için kaynak dönüşümler sağlanmaktadır.

Yaşam döngüsü 2.5 Yaşam Döngüsü 2.5 (KTX) Yaşam döngüsü 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • Kotlin'de oluşturulan bir Observer sınıfının onChanged yönteminin boşluk kabul edebileceği durum, artık genel türün boşluk kabul edebileceği durumla eşleşiyor. Observer.onChanged()'ün boş değer kabul etmesini istiyorsanız Observer'u boş değer türüne sahip bir şekilde başlatmanız gerekir.
  • Aşağıdaki sınıflar da Kotlin'e dönüştürülmüştür ancak kaynak uyumluluğunu korur: DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, ViewModelStore, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher ve ProcessLifecycleOwner

Sürüm 2.6.0-rc01

22 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 yayınlanır. 2.6.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • LiveData.distinctUntilChanged() uzantısı artık önceki LiveData için ayarlanmış bir değer varsa döndürülen LiveData değerini value olarak ayarlar. Bu, gözlem davranışını değiştirmez. LiveData kaynağından gelen güncellenmiş değerler, yalnızca distinctUntilChanged() kaynağından döndürülen LiveData değerini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)

Sürüm 2.6.0-beta01

8 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 yayınlanır. 2.6.0-beta01 sürümü bu taahhütleri içerir.

Kotlin Dönüşümleri

  • LifecycleOwner artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumlu olmayan bir değişikliktir. Artık önceki getLifecycle() işlevini uygulamak yerine lifecycle mülkünü geçersiz kılmalıdırlar. (I75b4b, b/240298691)
  • ViewModelStoreOwner artık Kotlin'de. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumlu olmayan bir değişikliktir. Artık önceki getViewModelStore() işlevini uygulamak yerine viewModelStore mülkünü geçersiz kılmalıdırlar. (I86409, b/240298691)
  • LifecycleOwner'teki lifecycleScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx'ten lifecycle-common yapıya taşındı. (I41d78, b/240298691)
  • Lifecycle'teki coroutineScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx'tan lifecycle-common yapıya taşındı. (Iabb91, b/240298691)

Sürüm 2.6.0-alpha05

25 Ocak 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha05 yayınlanır. 2.6.0-alpha05 sürümü bu taahhütleri içerir.

Kotlin Dönüşümleri

  • Transformations artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış ve doğrudan Transformations.map gibi söz dizimleri kullanan sınıflar için kaynak uyumsuz bir değişikliktir. Kotlin kodu artık daha önce yalnızca lifecycle-livedata-ktx kullanılırken kullanılabilen Kotlin uzantı yöntemi söz dizimini kullanmalıdır. Java programlama dili kullanılırken bu yöntemlerin androidx.arch.core.util.Function yöntemi alan sürümlerinin desteği sonlandırılır ve Kotlin Function1 alan sürümleriyle değiştirilir. Bu değişiklik, ikili uyumluluğu korur. (I8e14f)
  • ViewTreeViewModelStoreOwner artık Kotlin ile yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için androidx.lifecycle.setViewTreeViewModelStoreOwner ve androidx.lifecycle.findViewTreeViewModelStoreOwner sınıflarının View bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu sürüm, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (Ia06d8, Ib22d8, b/240298691)
  • HasDefaultViewModelProviderFactory arayüzü artık Kotlin'de yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Bu sınıflar artık önceki ilgili işlevleri uygulamak yerine defaultViewModelProviderFactory ve defaultViewModelCreationExtras özelliklerini geçersiz kılmalıdır. (Iaed9c, b/240298691)
  • Observer artık Kotlin ile yazılmış. onChanged() yöntemi artık parametresi için value adını kullanıyor. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher ve ProcessLifecycleOwner artık Kotlin ile yazılmıştır (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

Sürüm 2.6.0-alpha04

11 Ocak 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 yayınlanır. 2.6.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • LiveData artık LiveData üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni bir isInitialized özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı için liveData.value'nin null döndürmesi ile açık bir null değeri döndürmesi arasındaki farkı ayırt etmenize olanak tanır. (Ibd018)

API Değişiklikleri

  • lifecycle-runtime-compose'un collectAsStateWithLifecycle() API'leri artık deneysel durumda değil. (I09d42, b/258835424)
  • Duraklatma dağıtıcısının kullanılması bazı durumlarda kaynakların israf edilmesine yol açabileceğinden Lifecycle.launchWhenX yöntemleri ve Lifecycle.whenX yöntemlerinin desteği sonlandırılmıştır. Lifecycle.repeatOnLifecycle kullanılması önerilir. (Iafc54, b/248302832)

Kotlin Dönüşümleri

  • ViewTreeLifecycleOwner artık Kotlin ile yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için androidx.lifecycle.setViewTreeLifecycleOwner ve androidx.lifecycle.findViewTreeLifecycleOwner sınıflarının View bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, lifecycle-runtime-ktx'teki önceki Kotlin uzantısının yerini alır. Bu sürüm, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (I8a77a, I5234e, b/240298691)
  • LiveDataReactiveStreams artık Kotlin ile yazılmıştır. Daha önce lifecycle-reactivestreams-ktx'te bulunan Kotlin uzantıları lifecycle-reactivestreams modülüne taşındı ve Kotlin'de yazılan kodun birincil yüzeyi haline geldi. Kotlin uzantı yöntemi API'lerini kullanmıyorsanız bu, Kotlin'de yazılmış kod için kaynak uyumsuz bir değişikliktir. (I2b1b9, I95d22, b/240298691)
  • DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver ve ViewModelStore artık Kotlin'de yazılmıştır (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)

Hata Düzeltmeleri

  • SavedStateHandle, get() sınıfını yanlış sınıf türüyle çağırırken artık ClassCastException ile kilitlenmiyor. (I6ae7c)

Sürüm 2.6.0-alpha03

24 Ekim 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 yayınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Farklı yaşam döngüsü modülleri arasındaki kısıtlamaların beklendiği gibi çalışmamasıyla ilgili sorun düzeltildi. (I18d0d, b/249686765)
  • LifecycleRegistry.moveToState() tarafından oluşturulan hatalar artık geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha yararlı bir hata mesajı içeriyor. (Idf4b2, b/244910446)

Sürüm 2.6.0-alpha02

7 Eylül 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 yayınlanır. 2.6.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • MediatorLiveData artık ilk değeri ayarlamak için bir kurucu içeriyor. (Ib6cc5, b/151244085)

Hata Düzeltmeleri

  • Lifecycle yapıları artık birbirine bağımlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlar içeriyor. Bu sayede, bir yapı yükseltildiğinde diğer bağımlılıklar da otomatik olarak yükseltiliyor. b/242871265
  • FlowLiveData.asFlow() artık iş parçacığı güvenliği ve bağlamın korunmasını sağlamak için kendi Channel uygulamasını kullanmak yerine bir callbackFlow oluşturuyor. (I4a8b2, b/200596935)
  • FlowLiveData'ın asLiveData işlevi artık yeni LiveData nesnesini oluştururken StateFlow nesnesinin başlangıç değerini koruyacak. (I3f530, b/157380488)
  • Yaşam döngüsü 2.5.1: Lifecycle 2.4 ve sonraki sürümlerde durum bilgisine sahip kurucu kullanıldığında AndroidViewModelFactory'ın özel uygulamaları artık create(modelClass) işlevini doğru şekilde çağırıyor (I5b315, b/238011621)

Sürüm 2.6.0-alpha01

29 Haziran 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 yayınlanır. 2.6.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • collectAsStateWithLifecycle'nin StateFlow ve Flow özelliklerine, akışlardan veri toplayan ve en son değerini yaşam döngüsü bilinciyle Oluşturma Durumu olarak temsil eden yeni bir uzantı eklendi. Yaşam döngüsü en az belirli bir Lifecycle.State değerinde olduğunda akış toplanır ve yeni emisyon, durum değerine ayarlanır. Yaşam döngüsü bu Lifecycle.State değerinin altına düştüğünde akış toplama işlemi durur ve durum değerinin güncellenmesi engellenir. (I1856e, b/230557927)

Sürüm 2.5

Sürüm 2.5.1

27 Temmuz 2022

androidx.lifecycle:lifecycle-*:2.5.1 yayınlanır. 2.5.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • AndroidViewModelFactory'ün özel uygulamaları artık Lifecycle 2.4 ve sonraki sürümlerde durum bilgisine sahip AndroidViewModelFactory kurucusunu kullanırken create(modelClass) işlevini doğru şekilde çağırıyor. (I5b315, b/238011621)

2.5.0 sürümü

29 Haziran 2022

androidx.lifecycle:lifecycle-*:2.5.0 yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.

2.4.0 sürümünden beri yapılan önemli değişiklikler

  • SavedStateHandle artık LiveData kullanmaya alternatif olarak değer değişikliklerini izlemek için Kotlin StateFlow döndüren bir getStateFlow() API sunuyor.

  • ViewModel CreationExtras: Özel bir ViewModelProvider.Factory yazarken artık sırasıyla Application veya SavedStateHandle'ye erişmek için AndroidViewModelFactory ya da AbstractSavedStateViewModelFactory'yi genişletmeniz gerekmez. Bunun yerine bu alanlar, create'in yeni aşırı yükleme işlevi create(Class<T>, CreationExtras) aracılığıyla ViewModelProvider.Factory alt sınıfının her birine CreationExtras olarak sağlanır. Bu ekstralar, sırasıyla Etkinlik 1.5.0 ve Bölüntü 1.5.0 kullanılırken Etkinliğiniz veya Bölüntünüz tarafından otomatik olarak sağlanır.

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • lifecycle-viewmodel artık CreationExtras'i birincil veri kaynağı olarak kullanarak ViewModelProvider.Factory'nizi bir veya daha fazla lambda başlatıcı (özel fabrikanızın desteklediği her ViewModel sınıfı için bir tane) açısından tanımlamanıza olanak tanıyan bir viewModelFactory Kotlin DSL'si sağlıyor.

    val customFactory = viewModelFactory {
        // The return type of the lambda automatically sets what class this lambda handles
        initializer {
            // Get the Application object from extras provided to the lambda
            val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY))
            HomeViewModel(application)
        }
        initializer {
            val savedStateHandle = createSavedStateHandle()
            DetailViewModel(savedStateHandle)
        }
    }
    
  • lifecycle-viewmodel-compose artık özel bir ViewModelProvider.Factory oluşturma zorunluluğu olmadan ViewModel örneği oluşturmak için lambda fabrikası kullanan bir viewModel() API sunuyor.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • SavedStateHandle Compose Saver Entegrasyonu: lifecycle-viewmodel-compose yapı artık SavedStateHandle.saveable'da, bir "ViewModel"ın SavedStateHandle tarafından desteklenen rememberSaveable benzeri davranışa olanak tanıyan yeni deneysel API'ler içeriyor.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • addCloseable() API'si ve onCleared()'da herhangi bir manuel işlem gerektirmeden ViewModel temizlendiğinde kapatılacak bir veya daha fazla Closeable nesnesini ViewModel'ye eklemenize olanak tanıyan yeni bir kurucu aşırı yükleme eklendi.

    Örneğin, bir ViewModel'e ekleyebileceğiniz ancak test aracılığıyla kontrol edebileceğiniz bir coroutine kapsamı oluşturmak için Closeable'yi uygulayan bir CoroutineScope oluşturabilirsiniz:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    Bu, viewModelScope ile aynı yaşam süresini korurken ViewModel yapıcınızda kullanılabilir:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

Davranış değişiklikleri

  • Lifecycle.State öğesini INITIALIZED'dan DESTROYED'ye taşımaya çalışmak artık Lifecycle öğesinin bağlı bir gözlemcisinin olup olmadığına bakılmaksızın her zaman bir IllegalStateException hatası oluşturur.
  • LifecycleRegistry, DESTROYED durumuna ulaştığında gözlemcilerini temizleyecektir.

Sürüm 2.5.0-rc02

15 Haziran 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 yayınlanır. 2.5.0-rc02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • ViewModelProvider, compileOnly yaşam döngüsü bağımlılıkları önceki sürümlerinin 2.5 ve sonraki sürümlerle karıştırılması durumunda artık kilitlenmeyecek. (I81a66, b/230454566)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 yayınlanır. 2.5.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • MediatorLiveData.addSource() artık null kaynağı gözlemcilere iletmek yerine null kaynağı aktardığında NullPointerException atıyor.(Ibd0fb, b/123085232)

Sürüm 2.5.0-beta01

20 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 yayınlanır. 2.5.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateHandle.saveable mülk temsilcileri eklendi. Bu temsilciler, SavedStateHandle'a durumu kaydetmek için mülk adlarını anahtar olarak kullanır (I8bb86, b/225014345)

Hata Düzeltmeleri

  • Birincil olmayan bir alt gezinme sekmesinde bir NavHost'nin başka bir NavHost'nin içine yerleştirilmesinin, birden fazla geri yığını kullanırken IllegalStateException'ye yol açmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)

Sürüm 2.5.0-alpha06

6 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 yayınlanır. 2.5.0-alpha06 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • rememberSaveable ile eşdeğerlik için SavedStateHandle.saveable'e deneysel MutableState aşırı yükleme ekleyin (I38cfe, b/224565154)

API Değişiklikleri

  • CreationExtras artık mühürlü değil, soyut. (Ib8a7a)

Hata Düzeltmeleri

  • SavedStateHandleController nedeniyle oluşan bir IllegalStateException: Already attached to lifecycleOwner hatası düzeltildi. (I7ea47, b/215406268)

Sürüm 2.5.0-alpha05

23 Mart 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 yayınlanır. 2.5.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose modülü artık SavedStateHandle içindeki değerlerin rememberSaveable'ın kullandığı kayıtlı örnek durumuna doğru şekilde entegre edilmesini sağlayan deneysel bir API olan SavedStateHandleSaver'ü sağlıyor. (Ia88b7, b/195689777)

API Değişiklikleri

  • Java'da Lifecycle 2.3 ve sonraki Lifecycle sürümleriyle ilgili bir uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)

Hata Düzeltmeleri

  • SavedStateViewFactory artık SavedStateRegistryOwner ile başlatılmış olsa bile CreationExtras kullanımını destekliyor. Ek bilgiler sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)

Sürüm 2.5.0-alpha04

9 Mart 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 yayınlanır. 2.5.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateHandle artık LiveData kullanmaya alternatif olarak değer değişikliklerini izlemek için Kotlin StateFlow döndüren bir getStateFlow() API sunuyor. (Iad3ab, b/178037961)

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 yayınlanır. 2.5.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • addCloseable() API'si ve ViewModel'ye bir veya daha fazla Closeable nesnesi eklemenize olanak tanıyan yeni bir kurucu aşırı yükleme işlevi eklendi. Bu nesneler, onCleared()'da herhangi bir manuel işlem gerektirmeden ViewModel temizlendiğinde kapatılır. (I55ea0)
  • lifecycle-viewmodel artık birincil veri kaynağı olarak CreationExtras'ı kullanarak belirli ViewModel sınıflarını işlemek için lambda eklemenize olanak tanıyan bir InitializerViewModelFactory sağlıyor. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose artık özel bir ViewModelProvider.Factory oluşturulmasını gerektirmeden ViewModel örneği oluşturmak için bir lambda fabrikası kullanan bir viewModel() API sunuyor. (I97fbb, b/216688927)

API Değişiklikleri

  • Artık lifecycle-viewmodel-compose üzerinden CreationExtras ile ViewModel oluşturabilirsiniz. (I08887, b/216688927)

Davranış değişiklikleri

  • Lifecycle.State öğesini INITIALIZED'dan DESTROYED'ye taşımaya çalışmak artık Lifecycle öğesinin bağlı bir gözlemcisinin olup olmadığına bakılmaksızın her zaman bir IllegalStateException hatası oluşturur. (I7c390, b/177924329)
  • LifecycleRegistry, DESTROYED durumuna ulaştığında gözlemcilerini temizleyecektir. (I4f8dd, b/142925860)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 yayınlanır. 2.5.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateHandle ve SavedStateViewModelFactory Kotlin'e dönüştürüldü. Bu sayede her iki sınıftaki genel türlerin boşluk kabul etme özelliği iyileştirildi. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • LiveData switchMap işlev parametresi artık boş değer kabul eden bir çıkışa sahip olabilir. (I40396, b/132923666)
  • LiveData -ktx uzantıları artık bu işlevler çağrılırken sonucun kullanılmasını zorunlu kılmak için @CheckResult ile ek açıklamaya sahiptir. (Ia0f05, b/207325134)

Davranış değişiklikleri

  • SavedStateHandle, belirtilen anahtar için bir değer olmadığında artık defaultValue değerini düzgün şekilde depolar. (I1c6ce, b/178510877)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.4.1: ProcessLifecycleInitializer'in StartupException atmasını önleyen düzeltmelerin varsayılan olarak kullanılabilmesi için lifecycle-process, Startup 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724)
  • Özel AndroidViewModel sınıflarında parametreler yanlış sırada olduğunda ve ViewModel oluşturulmaya çalışıldığında artık daha iyi bir hata mesajı gösteriliyor. (I340f7, b/177667711)
  • Artık uygulama ayarlamanıza gerek kalmadan AndroidViewModelFactory kullanarak CreationExtras üzerinden görüntüleme modeli oluşturabilirsiniz. (I6ebef, b/217271656)

Sürüm 2.5.0-alpha01

26 Ocak 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 yayınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.

ViewModel CreationExtras

Bu sürümle birlikte, ViewModel öğesinin nasıl oluşturulacağını yeniden yapılandırmaya yönelik temelleri atıyoruz. Her biri ek işlevler ekleyen katı bir ViewModelProvider.Factory alt sınıfı grubu (AndroidViewModelFactory aracılığıyla Application oluşturucu parametresine, SavedStateViewModelFactory ve AbstractSavedStateViewModelFactory aracılığıyla SavedStateHandle oluşturucu parametresine vb. izin verme) yerine, yeni bir kavram olan CreationExtras'e dayanan durumsuz fabrikalar dünyasına geçiyoruz. (Ia7343, b/188691010, b/188541057)

Bu değişiklikle birlikte ViewModelProvider artık ViewModelProvider.Factory'nin önceki create(Class<T>) yöntemine doğrudan çağrı göndermez. Bunun yerine, create için yeni bir aşırı yükleme çağrısı yapar: create(Class<T>, CreationExtras). Bu, ViewModelProvider.Factory örneğinin doğrudan uygulanmasının artık bu yeni CreationExtras öğelerinin her birine erişebildiği anlamına gelir:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: Bu String, ViewModelProvider.get()'ye ilettiğiniz özel anahtara erişim sağlar.
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY, Application sınıfına erişim sağlar.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY, bu ViewModel'i oluşturmak için kullanılan SavedStateRegistryOwner'a erişim sağlar.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY, bu ViewModel'i oluşturmak için kullanılan ViewModelStoreOwner'a erişim sağlar.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY, SavedStateHandle oluşturmak için kullanılması gereken bağımsız değişkenler Bundle'ye erişim sağlar.

Bu ekstralar, Etkinlik 1.5.0-alpha01, Fragment 1.5.0-alpha01 ve Gezinme 2.5.0-alpha01 kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların önceki bir sürümünü kullanıyorsanız CreationExtras boş olur. ViewModelProvider.Factory'un mevcut alt sınıflarının tümü, hem bu kitaplıkların önceki sürümleri tarafından kullanılan eski oluşturma yolunu hem de ileride kullanılacak CreationExtras yolunu desteklemek için yeniden yazılmıştır.

Bu CreationExtras'ler, fabrika alt sınıflarının katı bir hiyerarşisine ihtiyaç duymadan her ViewModel'ye yalnızca ihtiyacınız olan bilgileri aktaran bir ViewModelProvider.Factory oluşturmanıza olanak tanır:

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

Yalnızca ihtiyaç duyan ViewModel için SavedStateHandle oluşturmak üzere SavedStateHandleSupport'deki CreationExtras üzerinde createSavedStateHandle() Kotlin uzantı işlevini kullanırız. (Ia6654, b/188541057)

Özel CreationExtras, ComponentActivity veya Fragment'inizdeki getDefaultViewModelCreationExtras()'ü geçersiz kılarak sağlanabilir. Böylece, özel ViewModelProvider.Factory'iniz için yerleşik bir destekli enjeksiyon biçimi olarak kullanılabilir. Bu ekstralar, doğrudan ViewModelProvider ile kullanıldığında veya by viewModels() ve by activityViewModels() Kotlin mülk uzantılarını kullanırken özel fabrikanıza otomatik olarak sunulur. (I79f2b, b/207012584, b/207012585, b/207012490)

Hata Düzeltmeleri

  • Bir SavedStateHandle için sağlanan varsayılan değerin, SavedStateHandle'ten özel olarak kaldırılmış olsa bile işlem sona erip yeniden oluşturulduktan sonra yeniden görünmesi sorunu düzeltildi. Bunun sonucunda SavedStateHandle artık varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)

Sürüm 2.4

Sürüm 2.4.1

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.4.1 yayınlanır. 2.4.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Yaşam döngüsü 2.5.0-alpha01'den geri bağlandı: Bir SavedStateHandle için sağlanan varsayılan değerin, SavedStateHandle'dan özel olarak kaldırılmış olsa bile işlem sona erip yeniden oluşturulduktan sonra yeniden görünmesi sorunu düzeltildi. Bunun sonucunda SavedStateHandle artık varsayılan değerleri ve geri yüklenen değerleri birlikte birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)
  • lifecycle-process artık ProcessLifecycleInitializer kullanılmasının StartupException'e neden olduğu bir gerileme düzeltilen Androidx Startup 1.1.1 sürümüne bağlıdır. (b/216490724)

Sürüm 2.4.0

27 Ekim 2021

androidx.lifecycle:lifecycle-*:2.4.0 yayınlanır. 2.4.0 sürümü bu taahhütleri içerir.

2.3.0 sürümünden beri yapılan önemli değişiklikler

  • @OnLifecycleEvent desteği sonlandırıldı. Bunun yerine LifecycleEventObserver veya DefaultLifecycleObserver kullanılmalıdır.
  • androidx.lifecycle:lifecycle-viewmodel-compose kitaplığı eklendi. viewModel() kompozisyon oluşturma ve LocalViewModelStoreOwner sağlar.
    • Kaynakta değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık null değer atanabilir genel türe izin vermiyor.
  • androidx.lifecycle:lifecycle-runtime-ktx'e yeni coroutine API'ler eklendi:
  • Lifecycle.repeatOnLifecycle, yaşam döngüsü en azından belirli bir durumdayken bir coroutine içinde bir kod bloğu yürüten API. Yaşam döngüsü hedef durumdan çıkıp hedef duruma girerken engelleme iptal edilir ve yeniden başlatılır;
  • Flow.flowWithLifecycle, yaşam döngüsü en azından belirli bir durumdayken yukarı akış akışından değer yayan API.
  • DefaultLifecycleObserver, lifecycle.lifecycle-common-java8'ten lifecycle.lifecycle-common'ye taşındı. lifecycle.lifecycle-common-java8 artık lifecycle.lifecycle-common'a ek olarak başka işlev sağlamıyor. Bu nedenle, lifecycle.lifecycle-common-java8'e olan bağımlılık lifecycle.lifecycle-common ile değiştirilebilir.
  • lifecycle-viewmodel-ktx'teki coroutine olmayan API'ler lifecycle-viewmodel modülüne taşındı.
  • lifecycle-process artık ProcessLifecycleOwner öğesini başlatmak için androidx.startup kullanıyor.

    Daha önce bu işlem androidx.lifecycle.ProcessLifecycleOwnerInitializer tarafından yapılıyordu.

    Geçmişte işlem yaşam döngüsünü başlatmak için kullanılan ContentProvider yerine tools:node="remove" kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (veya)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Sürüm 2.4.0-rc01

29 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01, Yaşam Döngüsü 2.4.0-beta01'den herhangi bir değişiklik olmadan yayınlanmıştır. 2.4.0-rc01 sürümü bu taahhütleri içerir.

Sürüm 2.4.0-beta01

15 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 yayınlanır. 2.4.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • @OnLifecycleEvent desteği sonlandırıldı. Bunun yerine LifecycleEventObserver veya DefaultLifecycleObserver kullanılmalıdır. (I5a8fa)
  • DefaultLifecycleObserver, androidx.lifecycle.lifecycle-common-java8 yerine androidx.lifecycle.lifecycle-common konumuna taşındı. androidx.lifecycle.lifecycle-common-java8 artık androidx.lifecycle.lifecycle-common'a ek olarak başka işlevler sağlamıyor. Bu nedenle, androidx.lifecycle.lifecycle-common-java8'e olan bağımlılık androidx.lifecycle.lifecycle-common ile değiştirilebilir. (I021aa)
  • lifecycle-viewmodel-ktx'teki coroutine olmayan API'ler lifecycle-viewmodel modülüne taşındı. (I6d5b2)

Harici Katkı

  • ViewModel dokümanlarında bir türü düzelttiği için dmitrilc'ye teşekkürler. (#221)

Sürüm 2.4.0-alpha03

4 Ağustos 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 yayınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Kaynakta değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık nullable genel türüne izin vermiyor. (I9b9f6)

Davranış Değişiklikleri

  • Lifecycle.repeatOnLifecycle: block artık yürütme işlemi tekrarlanırken her zaman seri olarak çağrılır. (Ibab33)

Harici Katkı

  • repeatOnLifecycle dokümanlarında kod snippet'lerini düzelttiği için chao2zhang'e teşekkürler. #205.

Sürüm 2.4.0-alpha02

16 Haziran 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 yayınlanır. 2.4.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • lifecycle-runtime-ktx'a, repeateOnLifecycle'nin onStart() veya onResume() içinde yanlış kullanıldığını algılayan yeni bir RepeatOnLifecycleWrongUsage dil bilgisi denetimi eklendi. (706078, b/187887400)

API Değişiklikleri

  • Yapılandırılmış eşzamanlılığa saygı gösteren ve daha kolay anlaşılan Lifecycle.repeatOnLifecycle API'si için LifecycleOwner.addRepeatingJob API kaldırıldı. (I4a3a8)
  • Diğer androidx.startup.Initializer'ların bunları bağımlılık olarak kullanabilmesi için ProcessLifecycleInitializer'yi herkese açık hale getirin. (I94c31)

Hata Düzeltmeleri

  • Alanda değiştirici olduğunda NullSafeMutableLiveData lint kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616)
  • Genel türlerin kullanıldığı NullSafeMutableLiveData lint kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)

Harici Katkı

Sürüm 2.4.0-alpha01

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 yayınlanır. 2.4.0-alpha01 sürümü bu taahhütleri içerir.

Davranış Değişiklikleri

  • lifecycle-process artık ProcessLifecycleOwner öğesini başlatmak için androidx.startup kullanıyor.

    Daha önce bu işlem androidx.lifecycle.ProcessLifecycleOwnerInitializer tarafından yapılıyordu.

    Geçmişte işlem yaşam döngüsünü başlatmak için kullanılan ContentProvider yerine tools:node="remove" kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (veya)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

API Değişiklikleri

  • Yaşam döngüsü en azından belirli bir durumdayken Lifecycle.repeatOnLifecycle API'yi kullanarak yukarı akış akışından değer yayınlayan bir Flow.flowWithLifecycle API eklendi. Bu API, yeni LifecycleOwner.addRepeatinJob API'ye de alternatiftir. (I0f4cd)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.3.1'den itibaren: NonNullableMutableLiveData lint kuralı artık farklı boşluk kabul etme durumuna sahip alan değişkenlerini doğru şekilde ayırt edebilir. (b/169249668)

Yaşam Döngüsü Görünüm Modeli Derleme Sürümü 1.0.0

Sürüm 1.0.0-alpha07

16 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 yayınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.

Büyük API Değişiklikleri

  • viewModel() artık isteğe bağlı bir ViewModelStoreOwner alır. Bu sayede, LocalViewModelStoreOwner dışındaki sahiplerle çalışmayı kolaylaştırır. Örneğin, artık belirli bir gezinme grafiğiyle ilişkili bir ViewModel almak için viewModel(navBackStackEntry) kullanabilirsiniz. (I2628d, b/188693123)

Sürüm 1.0.0-alpha06

2 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 yayınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.

Oluştur 1.0.0-beta08 sürümü ile uyumlu olacak şekilde güncellendi.

Sürüm 1.0.0-alpha05

18 Mayıs 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Oluştur 1.0.0-beta07 sürümüyle uyumlu olacak şekilde güncellendi.

Hata Düzeltmeleri

  • ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumludur (I6f9de, b/184718994)

Sürüm 1.0.0-alpha04

7 Nisan 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.

Bağımlılık Değişiklikleri

  • Bu sürüm, androidx.hilt:hilt-navigation-compose ve androidx.navigation:navigation-compose'un androidx.compose.compiler:compiler:1.0.0-beta04 ve androidx.compose.runtime:runtime:1.0.0-beta04'daki bağımlılıkları senkronize etmesine olanak tanır. 1.0.0 için derleyici ve çalışma zamanının eşleşmesi gerekir.

Sürüm 1.0.0-alpha03

10 Mart 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current artık mevcut kompozisyonda ViewModelStoreOwner'ın kullanılıp kullanılamayacağını daha iyi belirlemek için boş bırakılabilir bir ViewModelStoreOwner döndürüyor. viewModel() ve NavHost gibi ViewModelStoreOwner gerektiren API'ler, ViewModelStoreOwner ayarlanmasa bile istisna atar. (Idf39a)

Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha02

24 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner artık asProvidableCompositionLocal() API'nin yerini alarak CompositionLocalProvider ile kullanılabilen provides işlevlerine sahiptir. (I45d24)

Lifecycle-Viewmodel-Compose Sürüm 1.0.0-alpha01

10 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • viewModel() bileşeni ve LocalViewModelStoreOwner, androidx.compose.ui.viewinterop'den androidx.lifecycle.viewmodel.compose paketindeki bu yapıya taşındı. (I7a374)

Sürüm 2.3.1

Yaşam Döngüsü Sürümü 2.3.1

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.3.1 yayınlanır. 2.3.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData lint kuralı artık farklı boşluk kabul etme durumuna sahip alan değişkenlerini doğru şekilde ayırt edebilir. (b/169249668)

Sürüm 2.3.0

Sürüm 2.3.0

10 Şubat 2021

androidx.lifecycle:lifecycle-*:2.3.0 yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.

2.2.0 sürümünden beri yapılan önemli değişiklikler

  • Bölünemeyen sınıflar için SavedStateHandle desteği: SavedStateHandle artık belirli bir anahtar için setSavedStateProvider()'ı çağırmanıza olanak tanıyarak ve SavedStateHandle'dan durumunu kaydetmesi istendiğinde saveState()'e geri çağırma isteği gönderecek bir SavedStateProvider sağlayarak üşengeç serileştirmeyi destekliyor. Bölünemeyen sınıfları kaydetme başlıklı makaleyi inceleyin.
  • Yaşam Döngüsü Davranış Yaptırım Politikası:
    • LifecycleRegistry artık DESTROYED değerini son durum olarak zorunlu kılıyor.
    • LifecycleRegistry artık yöntemlerinin ana iş parçacığında çağrıldığını doğrular. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir şarttı. Ana olmayan iş parçalarından gözlemciler eklendiğinde, çalışma zamanında kilitlenmelerin yakalanması zorlaşıyordu. Kendi bileşenlerinizin sahip olduğu LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, bu LifecycleRegistry'ye farklı iş parçalarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
  • Yaşam döngüsü durumu ve etkinlik yardımcıları: State ve geçiş yönü verildiğinde Event oluşturmak için Lifecycle.Event'ye downFrom(State), downTo(State), upFrom(State), upTo(State) statik yardımcı yöntemleri eklendi. Yaşam döngüsünün Event'den hemen sonra geçeceği State değerini sağlayan getTargetState() yöntemi eklendi.
  • withStateAtLeast: Yaşam döngüsü durumunu bekleyen ve durum değişikliği noktasında askıya almayan bir kod bloğunu eşzamanlı olarak çalıştıran, ardından sonuçla devam eden Lifecycle.withStateAtLeast API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir dağıtıcı kullanmadıkları için mevcut when* yöntemlerinden farklıdır. (aosp/1326081)
  • ViewTree API'leri: Yeni ViewTreeLifecycleOwner.get(View) ve ViewTreeViewModelStoreOwner.get(View) API'si, bir View örneği verildiğinde sırasıyla kapsayıcı LifecycleOwner ve ViewModelStoreOwner öğelerini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için 1.2.0 etkinliğine, 1.3.0 fragmanına ve AppCompat 1.3.0-alpha01 veya sonraki bir sürüme yükseltmeniz gerekir. findViewTreeLifecycleOwner ve findViewTreeViewModelStoreOwner Kotlin uzantıları sırasıyla lifecycle-runtime-ktx ve lifecycle-viewmodel-ktx'te kullanılabilir.
  • LiveData.observe() Kotlin uzantısının desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olan LiveData.observe() Kotlin uzantısının desteği, Kotlin 1.4'te gerekli olmadığı için sonlandırıldı.

Sürüm 2.3.0-rc01

16 Aralık 2020

androidx.lifecycle:lifecycle-*:2.3.0-rc01 yayınlanır. 2.3.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • SavedStateHandle için keys() yöntemi artık durum kaydedilmeden önce ve sonra tutarlı. Artık set() ve getLiveData() ile kullanılan anahtarlara ek olarak daha önce setSavedStateProvider() ile kullanılan anahtarları da içeriyor. (aosp/1517919, b/174713653)

Harici Katkı

Sürüm 2.3.0-beta01

1 Ekim 2020

androidx.lifecycle:lifecycle-*:2.3.0-beta01 yayınlanır. 2.3.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Lambda söz dizimini kullanmak için gerekli olan LiveData.observe() Kotlin uzantısı, Kotlin 1.4'te gerekli olmadığından artık desteklenmiyor. (I40d3f)

Hata Düzeltmeleri

Belge Değişiklikleri

  • liveData oluşturucu ve asLiveData() dokümanları, belirli zaman aşımı değerlerinin değiştirilmesiyle ilgili ayrıntıları içerecek şekilde güncellendi. (aosp/1122324)

Sürüm 2.3.0-alpha07

19 Ağustos 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 yayınlanır. 2.3.0-alpha07 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NullSafeMutableLiveData lint kontrolündeki bir kilitlenme sorunu düzeltildi. (aosp/1395367)

Sürüm 2.3.0-alpha06

22 Temmuz 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 yayınlanır. 2.3.0-alpha06 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • State ve geçiş yönü verildiğinde Event oluşturmak için Lifecycle.Event sınıfına downFrom(State), downTo(State), upFrom(State), upTo(State) statik yardımcı yöntemleri eklendi. Yaşam döngüsünün Event'den hemen sonra geçeceği State değerini sağlayan getTargetState() yöntemi eklendi. (I00887)
  • Yaşam döngüsü durumunu bekleyen ve durum değişikliği noktasında duraklatma içermeyen bir kod bloğunu eşzamanlı olarak çalıştıran, ardından sonuçla devam eden Lifecycle.withStateAtLeast API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir dağıtıcı kullanmadıkları için mevcut when* yöntemlerinden farklıdır. (aosp/1326081)

Davranış Değişiklikleri

  • LifecycleRegistry artık DESTROYED değerini son durum olarak zorunlu kılıyor. (I00887)
  • LifecycleRegistry artık yöntemlerinin ana iş parçacığında çağrıldığını doğrular. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir şarttı. Ana olmayan iş parçalarından gözlemciler eklendiğinde, çalışma zamanında kilitlenmelerin yakalanması zorlaşıyordu. Kendi bileşenlerinizin sahip olduğu LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz ancak bu durumda, bu LifecycleRegistry'ye farklı iş parçalarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir (Ie7280, b/137392809)

Hata Düzeltmeleri

  • NullSafeMutableLiveData'te yaşanan kilitlenme düzeltildi. (b/159987480)
  • lifecycle-livedata-core-ktx ile birlikte (ve özellikle NullSafeMutableLiveData ile) sunulan Lint kontrolleri için bir ObsoleteLintCustomCheck düzeltildi. (b/158699265)

Sürüm 2.3.0-alpha05

24 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 yayınlanır. 2.3.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • LiveData artık onActive() veya onInactive() için yinelenen çağrılardan kaçınarak yeniden giren durumları daha iyi yönetiyor. (b/157840298)
  • Android Studio 4.1 Canary 6 veya sonraki sürümler kullanılırken Lint kontrollerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)

Sürüm 2.3.0-alpha04

10 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 yayınlanır. 2.3.0-alpha04 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData Hata analizi kontrolünde yaşanan bir kilitlenme düzeltildi. (b/157294666)
  • NonNullableMutableLiveData lint denetimi artık null olmayan bir tür parametresi içeren bir MutableLiveData üzerinde null değerinin ayarlandığı çok daha fazla durumu kapsamaktadır. (b/156002218)

Sürüm 2.3.0-alpha03

20 Mayıs 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 sürümleri yayınlanır. 2.3.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • SavedStateHandle artık belirli bir anahtar için setSavedStateProvider()'u çağırmanıza olanak tanıyarak ve SavedStateHandle'den durumunu kaydetmesi istendiğinde saveState()'a geri çağrılacak bir SavedStateProvider sağlayarak tembel serileştirmeyi destekliyor. (b/155106862)
  • Yeni ViewTreeViewModelStoreOwner.get(View) API, bir View örneği verildiğinde kapsayıcı ViewModelStoreOwner'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik 1.2.0-alpha05, Fragment 1.3.0-alpha05 ve AppCompat 1.3.0-alpha01'e yükseltmeniz gerekir. lifecycle-viewmodel-ktx'a findViewModelStoreOwner() Kotlin uzantısı eklendi. (aosp/1295522)

Hata Düzeltmeleri

Sürüm 2.3.0-alpha02

29 Nisan 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 yayınlanır. 2.3.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateViewModelFactory artık, hazır bulunmayan ve AndroidViewModel desteğine ihtiyaç duyulmayan durumları daha iyi desteklemek için oluşturucusuna null Application iletmenize olanak tanır. (aosp/1285740)

Hata Düzeltmeleri

  • API 28 ve daha eski sürümlerin yüklü olduğu cihazlarda sınıf doğrulama hatası önlenerek soğuk başlatma performansı iyileştirildi. (aosp/1282118)

Sürüm 2.3.0-alpha01

4 Mart 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 yayınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Yeni ViewTreeLifecycleOwner.get(View) API, bir View örneği verildiğinde kapsayıcı LifecycleOwner'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik 1.2.0-alpha01 ve Fragment 1.3.0-alpha01'e geçmeniz gerekir. findViewTreeLifecycleOwner Kotlin uzantısı lifecycle-runtime-ktx'te kullanılabilir. (aosp/1182361, aosp/1182956)
  • Kotlin'de null olmayan olarak tanımlanmış bir MutableLiveData üzerinde null değeri ayarlarken sizi uyaran yeni bir Lint denetimi eklendi. Bu, livedata-core-ktx veya livedata-ktx yapıları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092)
  • LifecycleOwner'yi uygulayan ve iş parçacığı güvenli, değişken bir Lifecycle sağlayan yeni bir lifecycle-runtime-testing yapı mevcuttur.TestLifecycleOwner (aosp/1242438)

Hata düzeltmeleri

  • lifecycle-runtime yapısını benzersiz bir paket adı verin. (aosp/1187196)

Sürüm 2.2.0

ViewModel-Savedstate Sürümü 2.2.0

5 Şubat 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 yayınlanır. 2.2.0 sürümü bu taahhütleri içerir.

Yaşam döngüsü ViewModel SavedState artık diğer yaşam döngüsü yapılarıyla aynı sürümü paylaşıyor. 2.2.0'ün davranışı, 1.0.0'ün davranışıyla aynıdır.

Sürüm 2.2.0

22 Ocak 2020

androidx.lifecycle:lifecycle-*:2.2.0 yayınlanır. 2.2.0 sürümü bu taahhütleri içerir.

2.1.0 sürümünden bu yana yapılan önemli değişiklikler

  • Yaşam döngüsü coroutine entegrasyonu: Yeni lifecycle-runtime-ktx yapı, yaşam döngüsü ile Kotlin coroutine'leri arasında entegrasyon sağlar. lifecycle-livedata-ktx, iş parçacıklarından yararlanacak şekilde de genişletildi. Daha fazla bilgi için Kotlin eşzamanlı programlama yapılarını mimari bileşenleriyle kullanma başlıklı makaleyi inceleyin.
  • ViewModelProviders.of() desteği sonlandırıldı: ViewModelProviders.of() desteği sonlandırıldı. Fragment 1.2.0'i kullanırken aynı işlevi elde etmek için yeni ViewModelProvider(ViewModelStoreOwner) kurucusuna bir Fragment veya FragmentActivity iletebilirsiniz.
  • lifecycle-extensions Öğesinin kullanımdan kaldırılması: Yukarıda belirtilen ViewModelProviders.of()'ın kullanımdan kaldırılmasıyla birlikte, bu sürüm lifecycle-extensions'daki son API'nin de kullanımdan kaldırıldığını işaret eder. Bu öğe artık tamamen kullanımdan kaldırılmış kabul edilmelidir. lifecycle-extensions için gelecekte 2.3.0 sürümü yayınlanmayacağından, ihtiyacınız olan belirli yaşam döngüsü yapılarına (ör. LifecycleService kullanıyorsanız lifecycle-service, ProcessLifecycleOwner kullanıyorsanız lifecycle-process) bağlı olarak lifecycle-extensions yerine bu yapıları kullanmanızı önemle tavsiye ederiz.
  • Gradle Artımlı Ek Açıklama İşleyicisi: Yaşam döngüsü ek açıklama işleyicisi varsayılan olarak artımlıdır. Uygulamanız Java 8 programlama dilinde yazılmışsa bunun yerine DefautLifecycleObserver, Java 7 programlama dilinde yazılmışsa LifecycleEventObserver kullanabilirsiniz.

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 yayınlanır. 2.2.0-rc03 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • ViewModelStore içinde taklit edilmiş bir ViewModel depolanıp daha sonra varsayılan fabrika ile sorgulandığında ortaya çıkan bir hata düzeltildi.
  • launchWhenCreated içinde Dispatchers.Main.immediate kullanımı ve ilgili yaşam döngüsü etkinliği sırasında eşzamanlı olarak çağrılacak benzer yöntemleri düzeltin. (aosp/1156203)

Harici katkılar

  • Düzeltmeyle katkıda bulunan Anders Järleberg'e teşekkürler. (aosp/1156203)
  • Satır içi yürütmeyle ilgili bir uygulamayı inceleyen Jetbrains'den Vsevolod Tolstopyatov'a teşekkürler.

Bağımlılık değişiklikleri

  • Yaşam döngüsü uzantıları artık 1.2.0-rc03 Fragment'ine bağlıdır.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 yayınlanır. 2.2.0-rc02 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Kitaplığın proguard kurulumunda, hedef API 29'un altındaysa API 28 ve sonraki sürümleri çalıştıran cihazları etkileyen bir hata düzeltildi. (b/142778206)

Sürüm 2.2.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 yayınlanır. 2.2.0-rc01 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • launchWhenCreated ve ilgili yöntemlerin, Dispatchers.Main.immediate yerine Dispatchers.Main kullanması nedeniyle ilişkili yaşam döngüsü yönteminden bir kare geç çalıştırılması sorunu düzeltildi. (aosp/1145596)

Harici katkılar

  • Düzeltmeyi sağlayan Nicklas Ansman'a teşekkürler. (aosp/1145596)

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 yayınlanır. 2.2.0-beta01 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Lifecycle 2.2.0-alpha05'te ProcessLifecycleOwner'nin sıralamasında ve etkinliğin LifecycleOwner'ının Android 10 cihazlarda başlatıldı ve devam ettirilmeye geçirilmesinde ortaya çıkan bir gerileme düzeltildi. (aosp/1128132)
  • lifecycle-process'nin 2.0.0 veya 2.1.0 sürümü kullanılırken NullPointerException'a neden olan, Yaşam Döngüsü 2.2.0-alpha05'te tanıtılan bir gerileme düzeltildi. (b/141536990)

Sürüm 2.2.0-alpha05

18 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 yayınlanır. 2.2.0-alpha05 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • İş parçacıklı canlı veri oluşturucuda bir yarış koşulu düzeltildi. b/140249349

Sürüm 2.2.0-alpha04

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope ve liveData'in temel uygulaması artık Dispatchers.Main yerine Dispatchers.Main.immediate kullanıyor. (b/139740492)

Harici katkılar

  • Dispatchers.Main.immediate'e geçişe katkıda bulunan Nicklas Ansman'a teşekkürler. (aosp/1106073)

Sürüm 2.2.0-alpha03

7 Ağustos 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

API değişiklikleri

  • ViewModelProviders.of() desteği sonlandırıldı. Aynı işlevi elde etmek için yeni ViewModelProvider(ViewModelStoreOwner) kurucusuna bir Fragment veya FragmentActivity iletebilirsiniz. (aosp/1009889)

Sürüm 2.2.0-alpha02

2 Temmuz 2019

androidx.lifecycle:*:2.2.0-alpha02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

API değişiklikleri

  • LiveDataScope.initialValue, liveData bloğunun mevcut yayınlanan değerini izleyen LiveDataScope.latestValue ile değiştirildi.
  • liveData oluşturucuya, timeout parametresini Duration türü olarak alan yeni bir aşırı yükleme eklendi

Sürüm 2.2.0-alpha01

7 Mayıs 2019

androidx.lifecycle:*:2.2.0-alpha01 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Bu sürümde, Lifecycle ve LiveData için Kotlin coroutine'lerine destek sağlayan yeni özellikler eklendi. Bu özelliklerle ilgili ayrıntılı dokümanları burada bulabilirsiniz.

ViewModel-SavedState Sürüm 1.0.0

Sürüm 1.0.0

22 Ocak 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 yayınlanır. 1.0.0 sürümü bu taahhütleri içerir.

1.0.0 sürümündeki önemli özellikler

  • Yeni SavedStateHandle sınıfı eklendi. ViewModel sınıflarınızın kayıtlı duruma erişmesine ve bu duruma katkıda bulunmasına olanak tanır. Bu nesne, ViewModel sınıfının kurucusuna ve Fragments tarafından varsayılan olarak sağlanan fabrikalara alınabilir. AppCompatActivity, SavedStateHandle öğesini otomatik olarak ekler.
  • AbstractSavedStateViewModelFactory eklendi. ViewModel için özel fabrikalar oluşturmanıza ve bu fabrikalara SavedStateHandle'a erişim izni vermenize olanak tanır.

ViewModel-Savedstate Sürümü 1.0.0-rc03

4 Aralık 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 yayınlanır. 1.0.0-rc03 sürümü bu taahhütleri içerir.

Bağımlılık değişiklikleri

  • Yaşam döngüsü ViewModel SavedState artık yaşam döngüsü 2.2.0-rc03'e bağlıdır.

Viewmodel-Savedstate Sürümü 1.0.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 yayınlanır. 1.0.0-rc02 sürümü bu taahhütleri içerir.

Bağımlılık değişiklikleri

  • Artık yaşam döngüsüne bağlıdır 2.2.0-rc02.

ViewModel-SavedState Sürümü 1.0.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01, 1.0.0-beta01 ile aynı şekilde yayınlanır. 1.0.0-rc01 sürümü bu taahhütleri içerir.

ViewModel-Savedstate Sürümü 1.0.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 yayınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Activity.onActivityResult() sürümünde SavedState ViewModel'e ilk kez erişildiğinde IllegalStateException ile sonuçlanan sorun düzeltildi. (b/139093676)
  • AbstractSavedStateViewModelFactory kullanılırken yaşanan bir IllegalStateException düzeltildi. (b/141225984)

ViewModel-SavedState Sürüm 1.0.0-alpha05

18 Eylül 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.

API değişiklikleri

  • SavedStateViewModelFactory artık AbstractSavedStateViewModelFactory'yi genişletmiyor ve SavedStateHandle yalnızca bunu isteyen ViewModel'ler için oluşturuluyor (aosp/1113593)

ViewModel-SavedState Sürüm 1.0.0-alpha03

7 Ağustos 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Zararlı Değişiklikler

ViewModel-SavedState Sürümü 1.0.0-alpha02

2 Temmuz 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Varsayılan değer kabul eden SavedStateHandle.getLiveData() aşırı yükleme işlevi eklendi.

API Değişiklikleri

  • SavedStateVMFactory, SavedStateViewModelFactory olarak yeniden adlandırıldı.
  • AbstractSavedStateVMFactory, AbstractSavedStateViewModelFactory olarak yeniden adlandırıldı.

ViewModel-Savedstate Sürümü 1.0.0-alpha01

13 Mart 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 yayınlanır. Bu ilk sürümün tam taahhüt günlüğünü burada bulabilirsiniz.

Yeni özellikler

  • Artık ViewModels, savedstate özelliğine katkıda bulunabilir. Bunun için yeni kullanıma sunulan görünüm modelinin fabrikasını SavedStateVMFactory kullanırsınız ve ViewModel'inizde parametre olarak SavedStateHandlenesnesi alan bir kurucu olmalıdır.

2.1.0 sürümü

2.0.0 sürümünden beri yapılan önemli değişiklikler

  • Yaşam döngüsü etkinlikleri akışının gerekli olduğu durumlar için LifecycleEventObserver eklendi. Gizli bir GenericLifecycleObserver sınıfı yerine herkese açık bir API'dir.
  • LiveData.observe yöntemleri ve Transformations.* yöntemleri için ktx uzantıları eklendi.
  • Kaynak LiveData değeri değiştirilene kadar değer yayınlamayan yeni bir LiveData nesnesi oluşturan Transformations.distinctUntilChanged eklendi.
  • ViewModel.viewModelScope uzantı mülkü eklenerek ViewModel'lere coroutine desteği eklendi.

2.1.0 sürümü

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.1.0 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Sürüm 2.1.0-rc01

2 Temmuz 2019

androidx.lifecycle:*:2.1.0-rc01, androidx.lifecycle:*:2.1.0-beta01 ile aynı şekilde yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.lifecycle:*:2.1.0-beta01 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Yaşam döngüleri beta sürümüne geçirildi: Önceki alfa sürümlerinde kullanıma sunulan liveData dönüşümler ve gözlemler için uzantı işlevleri, ViewModel mülk yetkilendirmesi ile başlatma gibi API'ler kararlı hale getirildi ve değiştirilmeyecek.

Sürüm 2.1.0-alpha04

3 Nisan 2019

androidx.lifecycle:*:2.1.0-alpha04 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

API değişiklikleri

  • Temel değişiklik: by viewModels() ve by activityViewModels()'un temel API'si, yalnızca ViewModelStoreOwner yerine doğrudan ViewModelStore'yi destekleyecek şekilde değiştirildi. (aosp/932932)

Sürüm 2.1.0-alpha03

13 Mart 2019

androidx.lifecycle:*:2.1.0-alpha03 yayınlanır. Bu sürüme dahil edilen tüm taahhütlerin tam listesini burada bulabilirsiniz.

API değişiklikleri

  • ViewModelProvider.KeyedFactory kaldırıldı. ViewModelProvider.Factory'e ek olarak ikinci arayüz, Kotlin by viewmodels {}'te mülk yetkilendirmesi gibi yeni özelliklerle iyi bir şekilde uyumlu değildi. (aosp/914133)

Sürüm 2.1.0-alpha02

30 Ocak 2019

androidx.lifecycle 2.1.0-alpha02 yayınlanır.

API değişiklikleri

  • LifecycleRegistry artık desteği sonlandırılan setState() yönteminin yerini alan bir setCurrentState() yöntemi içeriyor. (aosp/880715)

Hata düzeltmeleri

  • İçerdiği ViewModelStore temizlendiğinde sahte ViewModel örneklerinin kilitlenmesine neden olan sorun düzeltildi. b/122273087

Sürüm 2.1.0-alpha01

17 Aralık 2018

androidx.lifecycle 2.1.0-alpha01 yayınlanır.

Yeni özellikler

  • Yaşam döngüsü etkinlikleri akışının gerekli olduğu durumlar için LifecycleEventObserver eklendi. Gizli bir GenericLifecycleObserver sınıfı yerine herkese açık bir API'dir.
  • LiveData.observe yöntemleri ve Transformations.* yöntemleri için ktx uzantıları eklendi.
  • Transformations.distinctUntilChanged yöntemi eklendi. Kaynak LiveData değeri değiştirilene kadar değer yayınlamayan yeni bir LiveData nesnesi oluşturur.
  • ViewModel'lerde coroutine desteği: ViewModel.viewModelScope uzantı özelliği eklendi.
  • create yönteminde key ve Class alan ViewModels için bir fabrika olan ViewModelProvider.KeyedFactory eklendi.

Sürüm 2.0.0

Sürüm 2.0.0

21 Eylül 2018

Yaşam döngüsü 2.0.0, ViewModel'deki 2.0.0-rc01'ten alınan bir hata düzeltmesiyle yayınlandı.

Hata Düzeltmeleri

  • Oluşturucuları yanlış bir şekilde kaldıran bir ViewModel proguard kuralı düzeltildi b/112230489

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • LifecycleObserver proguard kuralı, alt arayüzleri değil yalnızca uygulamaları koruyacak şekilde düzeltildi b/71389427
  • Kod karartma ve küçültmeye izin vermek için ViewModel proguard kuralları düzeltildi

AndroidX öncesi sürümler

Aşağıdaki Lifecycle'in AndroidX öncesi sürümleri için aşağıdaki bağımlılıkları ekleyin:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

1.1.1 sürümü

21 Mart 2018

Yalnızca bir küçük değişiklik: android.arch.core.util.Function, arch:runtime konumundan arch:common konumuna taşındı. Bu, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common'te) kullanılmasına olanak tanır.

lifecycle:common, lifecycle:runtime'un bir bağımlılığı olduğundan bu değişiklik lifecycle:runtime'u doğrudan etkilemez. Yalnızca Paging gibi doğrudan lifecycle:common'e bağlı olan modülleri etkiler.

Sürüm 1.1.0

22 Ocak 2018

Paketleme Değişiklikleri

Artık çok daha küçük yeni bağımlılıklar mevcuttur:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

API Değişiklikleri

  • Desteği sonlandırılan LifecycleActivity ve LifecycleFragment artık kaldırıldı. Lütfen FragmentActivity, AppCompatActivity veya Fragment desteğini kullanın.
  • @NonNull ek açıklaması ViewModelProviders ve ViewModelStores dosyalarına eklendi
  • ViewModelProviders kurucusunun desteği sonlandırıldı. Lütfen doğrudan statik yöntemlerini kullanın
  • ViewModelProviders.DefaultFactory desteği sonlandırıldı. Lütfen ViewModelProvider.AndroidViewModelFactory'u kullanın.
  • ViewModel ve AndroidViewModel örnekleri oluşturmaya uygun bir statik Factory almak için statik ViewModelProvider.AndroidViewModelFactory.getInstance(Application) yöntemi eklendi.