Yaşam döngüsü

Yaşam döngüsüne duyarlı bileşenlerin performansı veya başka bir bileşenin yaşam döngüsü durumunda meydana gelen değişikliğe tepki olarak uygulanabilecek işlemler. öğeler gibi öğeler içerir. Bu bileşenler, projenizin bakımı daha kolay olan, daha düzenli ve genellikle daha hafif olan kodlardır.

Bu tabloda androidx.lifecycle grubundaki tüm yapılar listelenmektedir.

Yapı Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
yaşam döngüsü-* 2,8,5 - - 2.9.0-alfa02
yaşam döngüsü-görünüm-modeli-oluşturma 2,8,5 - - 2.9.0-alfa02
Bu kitaplık en son 4 Eylül 2024'te güncellendi.

Bağımlılıkları bildirme

Yaşam döngüsüne bir bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.

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

Kotlin

Eski

    dependencies {
        def lifecycle_version = "2.8.5"
        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.5"
        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

Eski

    dependencies {
        def lifecycle_version = "2.8.5"
        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.5"
        val arch_version = "2.2.0"

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

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

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

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

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

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

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

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

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.

Yeni sayı oluştur

Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.

Sürüm 2.9

Sürüm 2.9.0-alpha02

4 Eylül 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 yayınlandı. Sürüm 2.9.0-alpha02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

Harici Katkı

  • androidx.compose.ui.platform.LocalLifecycleOwner öğesini ortak kaynak kümesine (KMP) taşıyın. Katkıları için JetBrains'den Ivan Matkov'a teşekkür ediyoruz. (8cd5d03)
  • Yaşam döngüsü 2.8.5 alanında: SavedStateHandle.saveable` uzantı temsilcisi artık boş değerleri desteklemektedir. Katkılarından dolayı Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)

Sürüm 2.9.0-alpha01

7 Ağustos 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 yayınlandı. Sürüm 2.9.0-alpha01 bu kaydetmeleri içerir.

Kotlin Çoklu Platform

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

Yeni Özellikler

  • onCleared (tüm platformlar) ve SavedStateHandle (yalnızca Android) desteğiyle birlikte ViewModel'leri ayrı olarak test etmek için ViewModelScenario sınıfı sağlayan yeni bir androidx.lifecycle:lifecycle-viewmodel-testing KMP yapısı mevcuttur. (337f68d, c9b3409, 9799a95c, b/264602919)
  • ViewModelProvider ile ViewModel oluşturmak artık ileti dizisi açısından güvenli; @MainThread ek açıklama 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, Kotlin içeriğinin deyimsel şekilde değiştirilmesini sağlamak için artık harita benzeri operatör aşırı yüklemeleri içeriyor. in, += ve + özelliklerinin CreationExtras ile kullanılmasına izin verir. (Ib4353)
  • CreationExtras artık equals, hashCode ve toString yöntemlerini uyguluyor. (Ib4353)
  • NewInstanceFactory artık JVM Masaüstü ve Android hedeflerinde kullanılabilir. (d3d0892)
  • Temel Uygulamayı Kotlin dili 2.0 sürümünde (I39df2) güvenli bir şekilde göstermek için satır içi uzantı özelliği

Hata Düzeltmeleri

  • Bu işlem, AGP 7.3 veya sonraki bir sürümle R8 kullanılırken (ör. R8 sürüm 3.3) ve AGP 8.1 veya sonraki sürümler kullanılırken tüm derlemeler (ör. D8 sürümü 8.1) için API modellemesi aracılığıyla otomatik olarak gerçekleştirildiğinden, yeni platform API'lerine erişimin manuel olarak özetlenmesi kaldırıldı. AGP kullanmayan müşterilerin D8 sürümüne 8.1 veya daha yeni bir sürüme geçmeleri önerilir. Daha fazla bilgi için bu makaleyi inceleyin. (If6b4c, b/345472586)

Sürüm 2.8

Sürüm 2.8.5

4 Eylül 2024

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

Hata Düzeltmeleri

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

Harici Katkı

  • SavedStateHandle.saveable uzantısı için yetki verilmiş kullanıcı artık boş değerleri destekliyor. Katkılarından dolayı Roman Kalukiewicz'e teşekkür ederiz. (0d78ea6)

Sürüm 2.8.4

24 Temmuz 2024

androidx.lifecycle:lifecycle-*:2.8.4 yayınlandı. Sürüm 2.8.4 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • LiveData.asFlow() artık, döndürülen Akışın LiveData üzerinde ayarlanmış bir değeri aldıktan hemen sonra tamamlandığı durumları (örneğin, take(1) kullanırken) doğru şekilde işliyor. (I9c566)
  • Lifecycle*Effect tamamlanma durumu artık belirleyicidir (ör. onStopOrDispose, Yaşam Döngüsü durdurulduğu için çağrıldıysa Yaşam Döngüsü tekrar STARTED değerine dönmediği sürece, kullanımdan kaldırıldıktan sonra ikinci kez çağrılmaz). (I5f607, b/352364595)

Sürüm 2.8.3

1 Temmuz 2024

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

Hata Düzeltmeleri

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

Sürüm 2.8.2

12 Haziran 2024

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

Hata Düzeltmeleri

  • Yaşam Döngüsü 2.8.X'i Compose 1.6.X veya önceki sürümlerle kullanırken CompositionLocal LocalLifecycleOwner not present hataları düzeltildi. Artık Yaşam Döngüsü 2.8.2'yi herhangi bir geçici çözüm olmadan Compose'un herhangi bir sürümüyle kullanabilirsiniz. (aosp/3105647, b/336842920)
  • compileOnly yaşam döngüsü bağımlılıklarının önceki sürümleri 2.8 ve sonraki sürümlerle karıştırıldığında ViewModelProvider artık kilitlenmeyecek ve LeakCanary gibi kitaplıklarla ilgili sorunlar düzeltilecek. (I80383, b/341792251)

Sürüm 2.8.1

29 Mayıs 2024

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

Hata Düzeltmeleri

  • lifecycle-viewmodel-compose, artık yalnızca compose-runtime öğesine ortak bir bağımlılığa sahip. Bu da compose-ui bağımlılığını ortadan kaldırıyor. Android yapısı, uyumluluk için compose-ui özelliğini korur. (aosp/3079334, b/339562627)
  • ViewModel ürününün, mülk yetkilerini kullanan saveable entegrasyonunda artık sınıf adı, otomatik oluşturulan anahtarın bir parçası olarak kullanılıyor. Böylece, birden fazla sınıf aynı SavedStateHandle öğesini kullanıyorsa çakışmalar önleniyor. (aosp/3063463)

Sürüm 2.8.0

14 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0 yayınlandı. Sürüm 2.8.0 bu kaydetmeleri içerir.

2.7.0'dan bu yana önemli değişiklikler

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzünden lifecycle-runtime-compose uygulamasına taşındı.
  • lifecycle-runtime-compose yapısı artık LifecycleOwner belirtilen Lifecycle.State değerinin altına düştükten sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanızı sağlayan dropUnlessResumed ve dropUnlessStarted API'lerini içeriyor. Örneğin bu, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Yazmada Gezinme özelliği ile kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope artık geçersiz kılınabilir bir kurucu parametresi oldu. Böylece kendi görev dağıtıcınızı ve SupervisorJob() öğelerini ekleyebilir veya runTest içindeki backgroundScope öğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)

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

  • LifecycleStartEffect ve LifecycleResumeEffect işlemlerinin anahtar olmadan çağrılması durumunda, bu API'lerin yansıttığı DisposableEffect API'siyle aynı kural uygulanarak artık bir hata gerçekleştirilir.

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) kullanımdan kaldırıldı ve yerine LiveData.toPublisher(lifecycleOwner).

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

  • NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden düzenlendi.

Yaşam Döngüsü Kotlin Çoklu Platform Uyumluluğu

Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry alanlarındaki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor.

Etkilenen yapılar:

  • lifecycle-common, çoğu API'yi common ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.
  • lifecycle-runtime, çoğu API'yi common ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.
  • Tüm API'ler lifecycle-runtime hedefine taşındığı için lifecycle-runtime-ktx şu anda boş.
  • lifecycle-runtime-compose, tüm API'leri common hedefine taşır ve androidx.compose adlı çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.

ViewModel Kotlin Çoklu Platform Uyumluluğu

lifecycle-viewmodel yapısı ile ViewModel, ViewModelStore, ViewModelStoreOwner ve ViewModelProvider gibi API'ler artık Kotlin Multiplatform ile uyumlu yapılarda sunulmaktadır.

Bu değişikliğe uyum sağlamak için, ViewModelProvider uygulamasında java.lang.Class<T> alan gibi yöntemlerde artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntem bulunmaktadır.

Android'de ikili program uyumluluğu korunur ancak Android API yüzeyi, ortak API yüzeyiyle karşılaştırılırken dikkate değer birkaç değişiklik olur:

  • ViewModelProvider örneği oluşturma işlemi, doğrudan oluşturucusunu çağırmak yerine artık ViewModelProvider.create() yöntemleriyle gerçekleştiriliyor.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel fabrikaların ViewModelProvider.Factory tarihinden itibaren, CreationExtras veya viewModelFactory Kotlin DSL'sini gerektiren create yöntemini kullanması önerilir.
  • ViewModelProvider, JVM dışı platformlarda özel bir fabrika olmadan kullanılırsa UnsupportedOperationException elde edilir. JVM platformlarında, özel bir fabrika sağlanmazsa bağımsız değişkensiz ViewModel oluşturucu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main özelliğinin kullanılamadığı platformlarda EmptyCoroutineContext yedeklenir (ör. Linux) seçin.

Etkilenen yapılar:

  • lifecycle-viewmodel, çoğu API'yi common ortamına taşır ve Android'in yanı sıra jvm ile iOS'i de destekler.
  • Tüm API'ler lifecycle-viewmodel hedefine taşındığı için lifecycle-viewmodel-ktx şu anda boş.
  • lifecycle-viewmodel-compose, tüm API'leri common hedefine taşır ve androidx.compose adlı çoklu platform desteğiyle eşleşen bir Android yapısı gönderir.

Davranış Değişiklikleri

  • Aynı clazz: KClass<VM : ViewModel> öğesine sahip bir initializer zaten eklenmişse InitializerViewModelFactory (viewModelFactory oluşturucu işlevi dahil) artık IllegalArgumentException atacak. (Ic3a36)

Bilinen Sorunlar

Sürüm 2.8.0-rc01

1 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 yayınlandı. Sürüm 2.8.0-rc01 bu kayıtları içerir.

Hata Düzeltmeleri

  • lifecycle-common sınıfları için Temel Profil'in düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artık lifecycle-runtime AAR'de yer almaktadır. (aosp/3038274, b/322382422)
  • ViewModel'e eklenmiş AutoCloseable örneklerinin temizlenme şekliyle ilgili istenmeyen sıralama değişikliği düzeltildi. Önceki sıra: addCloseable(String, AutoCloseable), ardından addClosable(AutoCloseable), ardından onCleared() geri yüklendi. (aosp/3041632)
  • Yerel ve JVM Masaüstü ortamlarına yönelik viewModelScope için varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)

Harici Katkı

  • Victor Kropp, JVM Desktop'taki ana iş parçacığının kontrolünü iyileştirdiği için teşekkürler. (aosp/3037116)

Sürüm 2.8.0-beta01

17 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 yayınlandı. Sürüm 2.8.0-beta01 bu kayıtları içerir.

Yeni Özellikler

  • lifecycle-runtime-compose yapısı artık Kotlin Multiplatform ile uyumlu. Kodu common platformuna taşıyor ve androidx.compose için sunulan çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor. (If7a71, I4f4a0, b/331769623)

Sürüm 2.8.0-alpha04

3 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 yayınlandı. Sürüm 2.8.0-alpha04 bu kaydetmeleri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose yapısı artık Kotlin Multiplatform ile uyumlu. Kodu common platformuna taşıyor ve androidx.compose adlı uygulamanın çoklu platform desteğiyle eşleşen bir Android yapısı gönderiyor. Bu değişikliğe uyum sağlamak amacıyla, Oluşturulabilir viewModel yöntemi artık java.lang.Class ek olarak KClass kabul ediyor. (b/330323282)

Hata Düzeltmeleri

  • NullSafeMutableLiveData, birçok yanlış pozitif sonucu önlemek için yeniden düzenlendi. (I2d8c1, Iafb18, I03463, I7ecef)

Bağımlılık güncellemesi

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

Sürüm 2.8.0-alpha03

20 Mart 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 yayınlandı. Sürüm 2.8.0-alpha03 bu kaydetmeleri içerir.

Yeni Özellikler

  • ViewModel.viewModelScope artık geçersiz kılınabilir bir kurucu parametresi oldu. Böylece kendi görev dağıtıcınızı ve SupervisorJob() öğelerini ekleyebilir veya runTest içindeki backgroundScope öğesini kullanarak varsayılanı geçersiz kılabilirsiniz. (I2817c, b/264598574)

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

Kotlin Çoklu Platform Uyumluluğu

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

Bu değişikliğe uyum sağlamak için, ViewModelProvider uygulamasında java.lang.Class<T> alan gibi yöntemlerde artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntem bulunmaktadır.

Android'de ikili program uyumluluğu korunur ancak Android API yüzeyi, ortak API yüzeyiyle karşılaştırılırken dikkate değer birkaç değişiklik olur:

  • ViewModelProvider örneği oluşturma işlemi, doğrudan oluşturucusunu çağırmak yerine artık ViewModelProvider.create() yöntemleriyle gerçekleştiriliyor.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel fabrikaların ViewModelProvider.Factory tarihinden itibaren, CreationExtras veya viewModelFactory Kotlin DSL'sini gerektiren create yöntemini kullanması önerilir.
  • ViewModelProvider, JVM dışı platformlarda özel bir fabrika olmadan kullanılırsa UnsupportedOperationException elde edilir. JVM platformlarında, özel bir fabrika sağlanmazsa bağımsız değişkensiz ViewModel oluşturucu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main özelliğinin kullanılamadığı platformlarda EmptyCoroutineContext yedeklenir (ör. Linux) seçin.

Davranış Değişiklikleri

  • Aynı clazz: KClass<VM : ViewModel> öğesine sahip bir initializer zaten eklenmişse InitializerViewModelFactory (viewModelFactory oluşturucu işlevi dahil) artık IllegalArgumentException atacak. (Ic3a36)

Hata Düzeltmeleri

  • ViewModel.getCloseable artık kopya anahtarları işliyor: key ile ilişkilendirilmiş bir AutoCloseable kaynağı zaten varsa eski kaynak hemen değiştirilecek ve kapatılacak. (Ibeb67)
  • Bir ViewModel öğesinin viewModelScope öğesine erişim artık ileti dizisi açısından güvenli. (If4766, b/322407038)

Harici Katkı

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzünün dışında kullanılabilmesi için Compose kullanıcı arayüzünden yaşam döngüsü çalışma zamanı oluşturma moduna taşındı. Katkı için Jake Wharton'a teşekkür ediyoruz. (I6c41b, b/328263448)

Sürüm 2.8.0-alpha02

21 Şubat 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 yayınlandı. 2.8.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • LifecycleOwner belirtilen Lifecycle.State değerinin altına düştükten sonra bile gerçekleşen tıklamaları veya diğer etkinlikleri bırakmanızı sağlayan dropUnlessResumed ve dropUnlessStarted API'leri eklendi. Örneğin bu, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Gezinme Oluşturma Yazma ile kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Kotlin Dönüşümleri

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

Kotlin Çoklu Platform Uyumluluğu

  • Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry alanlarındaki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılarda sunuluyor. (b/317249252)

API Değişiklikleri

  • LifecycleStartEffect ve LifecycleResumeEffect işlemlerinin anahtar olmadan çağrılması durumunda, bu API'lerin yansıttığı DisposableEffect API'siyle aynı kural uygulanarak artık bir hata gerçekleştirilir. (Ib0e0c, b/323518079)
  • ViewModel artık Closeable yerine AutoCloseable kullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) kullanımdan kaldırıldı ve yerine LiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)

Harici Katkı

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

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 yayınlandı. Sürüm 2.8.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • ViewModel artık getCloseable() üzerinden alınmasına izin veren bir key ile Closeable nesne eklemeyi destekliyor. (I3cf63)

Sürüm 2.7

Sürüm 2.7.0

10 Ocak 2024

androidx.lifecycle:lifecycle-*:2.7.0 yayınlandı. 2.7.0 sürümü bu kaydetmeleri içerir.

2.6.0'dan bu yana önemli değişiklikler

  • TestLifecycleOwner artık durum değişikliğini ve tüm LifecycleObserver geri çağırmalarının geri dönmeden önce tamamlanmasını sağlayan setCurrentState() askıya alma işlevini içeriyor. Özellikle currentState özelliğini doğrudan ayarlamanın aksine bu özellik runBlocking kullanmaz. Bu sayede runTest tarafından sağlanan koordinat içinde kullanım güvenli hale gelir.
  • map ve switchMap LiveData uzantıları artık distinctUntilChanged davranışını yansıtmaktadır. LiveData, value kümesine sahipse map/switchMap işlevi, döndürülen LiveData öğesinin value öğesini doldurmak için hemen çağrılır. Bu, başlangıç değerinin ilk bestenin bir parçası olarak ayarlanmasını sağlar (observeAsState() ile kullanıldığında) ancak gözlem davranışını değiştirmez. LiveData kaynağındaki güncelleme değerleri, yalnızca LiveData öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder.
  • Bu sürümde, işlem ölümü ve yeniden oluşturulmasından sonra SavedStateHandle ürününün özel Parcelable sınıflarını düzgün şekilde geri yüklememesine neden olan bir sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parseller dizisi için ek çalışma (doğru türde manuel olarak bir tür dizi oluşturmak) gerekir. Ayrıca get, getLiveData ve getStateFlow ile ilgili dokümanlarda artık bu sınırlama özel olarak ortadan kalkmaktadır.
  • LifecycleObserver ile ilişkili ProGuard saklama kuralları kaldırıldı. Diğer bir deyişle, API'leri yansıma yoluyla kullanmak isteyen (ör. desteği uzun süredir sonlandırılan @OnLifecycleEvent ek açıklamasının kullanıldığı) korumalı kod, kendi kullanım alanları için kendi Keep kurallarını sağlamalıdır.

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

  • LifecycleEventObserver kullanmaya alternatif olarak, artık Lifecycle.asFlow() uzantı yöntemiyle Lifecycle.Event Flow öğesini gözlemleyebilirsiniz.
  • Jetpack Compose kullanıcıları artık Lifecycle.Event tabanlı Compose yan efektlerini ç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 durdurulmuş ve duraklatılmış olarak devam ettirilen çift etkinlikleri işlemek için LifecycleStartEffect ve LifecycleResumeEffect öğelerini kullanabilir. Bu API, DisposableEffect ürününde bulunan API'yi yansıtır ve durum yükselirken yapılan değişikliğin, eski haline dönerken geri alınması gereken durumlar için uygundur.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

Daha fazla bilgi için Yaşam döngüsü olaylarında kod çalıştırma bölümüne bakın.

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

  • Mevcut Lifecycle.State, artık Lifecycle.currentStateFlow mülkü aracılığıyla gözlemlenebilir. Bu işlem, value değerinin geçerli Lifecycle.State olduğu bir StateFlow döndürür.
  • Jetpack Compose kullanıcıları, Lifecycle.State öğesini 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 Akışlarla yaşam döngüsü durumunu toplama bölümüne bakın.

Sürüm 2.7.0-rc02

13 Aralık 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 yayınlandı. 2.7.0-rc02 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • İşlem ölümü ve yeniden oluşturma işleminden sonra SavedStateHandle ürününün özel Parcelable sınıflarını düzgün şekilde geri yüklememesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parseller dizisi için ek çalışma (doğru türde manuel olarak bir tür dizi oluşturmak) gerekir. Ayrıca get, getLiveData ve getStateFlow ile ilgili dokümanlarda artık bu sınırlama özel olarak ortadan kalkmaktadır. (I0b55a)

Sürüm 2.7.0-rc01

15 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc01 yayınlandı. 2.7.0-rc01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.7.0-beta01

1 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01 hiçbir değişiklik yapılmadan yayınlandı. Sürüm 2.7.0-beta01 bu kaydetmeleri içerir.

  • Beta sürümü yükseltilmiş bir sürüm. Bu sürümde büyük bir değişiklik yapılmamıştır.

Sürüm 2.7.0-alpha03

18 Ekim 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 yayınlandı. 2.7.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • lifecycle-runtime-testing artık bir eş yordam içinde currentState alanını kullanarak TestLifecycleOwner öğesinin Lifecycle.State değerinin ayarlanmasını önlemek için yeni bir Lint kontrolü içeriyor. Lint kontrolü artık askıya alma işlemini setCurrentState öneriyor. Bu, Lifecycle.State öğesinin engelleme yapılmadan ayarlanmasına olanak tanır. (Icf728, b/297880630)

Hata Düzeltmeleri

  • Aynı LiveData örneğinin hem ilk çağrıda hem de sonraki bir çağrıda döndürülmesi, LiveData örneğinin kaynak olarak eklenmesini engellemesine neden olan LiveData.switchMap sorunu düzeltildi. (Ibedcba7)

Sürüm 2.7.0-alpha02

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 yayınlandı. 2.7.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • TestLifecycleOwner, kullanıcılara runTest tarafından sağlanana benzer bir eş yordam içinden TestLifecycleOwner kullanma seçeneği sunmak için artık 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 ayarlanmış bir değer varsa döndürülen LiveData öğesinin value öğesini ayarlıyor. Böylece, sonuç olarak elde edilen LiveData'nın Jetpack Compose'da kullanılması ilk bestede doğru duruma sahip oluyor. (I91d2b, b/269479952)
  • ViewModel adlı kullanıcının addCloseable() cihazı artık ViewModel onCleared() için çağrı almışsa Closeable hemen kapanıyor. (I4712e, b/280294730)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.6.2 ile ilgili: Durumun geri yüklenmesi halinde SavedStateHandle ürününün doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. save(), durumu üst öğede (SavedStateRegistry) kaydetmeden çağrıldı ve ardından durum tekrar geri yüklendi. Bu işlem, rememberSaveable ile Gezinme Oluşturma Aracı'ndaki 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ınlandı. 2.7.0-alpha01 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Lifecycle.State artık Lifecycle.currentStateFlow aracılığıyla gözlemlenebilir. Bu işlem, value öğesinin geçerli Lifecycle.State olduğu bir StateFlow döndürür. (Ib212d, b/209684871)
  • Lifecycle.Event 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 Compose SideEffect'ları ç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ı Compose SideEffect'ları çalıştırmak için LifecycleStartEffect API eklendi. (I5a8d1, b/235529345)
  • Lifecycle.Event tabanlı Compose SideEffect öğelerini çalıştırmak için LifecycleEventEffect API eklendi. (Ic9794, b/235529345)
  • Lifecycle.State ürününün doğrudan Compose State olarak gösterilmesi 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 üzerinde bir değer ayarlanmışsa döndürülen LiveData öğesinin value değerini ayarlıyor. Bu durum gözlem davranışını değiştirmez. LiveData kaynağından güncellenen değerler yalnızca distinctUntilChanged() öğesinden döndürülen LiveData öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)
  • LifecycleObserver ile ilişkili ProGuard saklama kuralları kaldırıldı. Diğer bir deyişle, API'leri yansıtma yoluyla kullanmak isteyen korumalı kodun, belirli kullanım alanları için kendi Keep kurallarını sağlaması gerekir. (Ia12fd)

Sürüm 2.6

Sürüm 2.6.2

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.6.2 yayınlandı. 2.6.2 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Durum geri yüklendiyse işlem ölümünden sonra SavedStateHandle öğesinin doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. save(), üst SavedStateRegistry içindeki durum gerçekten kaydedilmeden çağrıldı ve ardından durum tekrar geri yüklendi. Bu işlem, rememberSaveable ile Gezinme Oluşturma Aracı'ndaki 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ınlandı. Sürüm 2.6.1 bu kaydetmeleri içerir.

Bağımlılık Güncellemeleri

Sürüm 2.6.0

8 Mart 2023

androidx.lifecycle:lifecycle-*:2.6.0 yayınlandı. 2.6.0 sürümü bu kaydetmeleri içerir.

2.5.0'dan bu yana önemli değişiklikler

  • LiveData artık LiveData üzerinde hiç açık bir değerin ayarlanıp ayarlanmadığını gösteren yeni bir isInitialized özelliği içeriyor. Bu özellik, hiç değer belirlenmemiş veya açık bir null değeri olmadığı için liveData.value, null döndüren bir değer arasında ayrım yapabilmenizi sağlıyor.
  • MediatorLiveData artık başlangıç değeri ayarlamak için bir kurucu içeriyor.
  • Akışlardan toplanan ve akışlardan toplanan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Oluşturma Durumu olarak temsil eden collectAsStateWithLifecycle() StateFlow ve Flow için yeni bir uzantı eklendi.
  • Duraklatma sevk görevlisinin kullanılması bazı durumlarda kaynakların israfına neden olabileceği için Lifecycle.launchWhenX yöntemleri ve Lifecycle.whenX yöntemleri kullanımdan kaldırıldı. Lifecycle.repeatOnLifecycle kullanılması önerilir. İşin bir defaya mahsus olarak askıya alınması hakkında daha fazla bilgi edinmek için, bunun neden yapay olarak güvenli olmadığıyla ilgili bu açıklamayı inceleyin.
  • Kotlin Dönüşümü: Çok sayıda Yaşam Döngüsü sınıfı Kotlin'e dönüştürüldü. Dönüştürülen tüm sınıflar, önceki sürümlerle ikili program uyumluluğunu korur. Şu sınıflarda, Kotlin'de yazılmış sınıflar için kaynakla uyumsuz değişiklikler var: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

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

Yaşam döngüsü 2.5 Yaşam Döngüsü 2.5 (KTX) Yaşam döngüsü 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • Kotlin'de oluşturulan bir Observer için onChanged yönteminin boş değeri, artık genel türün null değeriyle eşleşiyor. Observer.onChanged() öğesinin null değer içeren bir türü kabul etmesini istiyorsanız Observer öğesini null değer içeren bir türle örneklendirmeniz gerekir.
  • Şu sınıflar da Kotlin'e dönüştürüldü, ancak kaynakla uyumlu kaldı: DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, ViewModelStore, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher ve ProcessLifecycleOwner

Sürüm 2.6.0-rc01

22 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 yayınlandı. 2.6.0-rc01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • LiveData.distinctUntilChanged() uzantısı artık, önceki LiveData üzerinde bir değer ayarlanmışsa döndürülen LiveData öğesinin value değerini ayarlıyor. Bu durum gözlem davranışını değiştirmez. LiveData kaynağından güncellenen değerler yalnızca distinctUntilChanged() öğesinden döndürülen LiveData öğesini gözlemlemeye başladığınızda geçerli olmaya devam eder. (Ib482f)

Sürüm 2.6.0-beta01

8 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 yayınlandı. Sürüm 2.6.0-beta01 bu kaydetmeleri içerir.

Kotlin Dönüşümleri

  • LifecycleOwner artık Kotlin dilinde yazılmış. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Söz konusu değişiklik, artık önceki getLifecycle() işlevini uygulamak yerine lifecycle özelliğini geçersiz kılmalıdır. (I75b4b, b/240298691)
  • ViewModelStoreOwner artık Kotlin'de. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Söz konusu değişiklik, artık önceki getViewModelStore() işlevini uygulamak yerine viewModelStore özelliğini geçersiz kılabilir. (I86409, b/240298691)
  • LifecycleOwner üzerindeki lifecycleScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx öğesindeki lifecycle-common yapıya taşındı. (I41d78, b/240298691)
  • Lifecycle üzerindeki coroutineScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx öğesindeki 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ınlandı. 2.6.0-alpha05 sürümü bu kaydetmeleri içerir.

Kotlin Dönüşümleri

  • Transformations artık Kotlin dilinde yazılmış. Bu, Transformations.map gibi doğrudan söz dizimini kullanan Kotlin'de yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Artık Kotlin kodu, daha önce yalnı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ümleri kullanımdan kaldırılır ve Kotlin Function1 alan sürümleriyle değiştirilir. Bu değişiklik, ikili program uyumluluğunu korur. (I8e14f)
  • ViewTreeViewModelStoreOwner artık Kotlin dilinde yazılmış. Bu değişiklik, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Daha önce ayarlanmış bir sahibi belirleyip bulmak için artık androidx.lifecycle.setViewTreeViewModelStoreOwner ve androidx.lifecycle.findViewTreeViewModelStoreOwner View paketinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, ikili programlarla uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynakla uyumlu olmaya devam eder. (Ia06d8, Ib22d8, b/240298691)
  • HasDefaultViewModelProviderFactory arayüzü artık Kotlin dilinde yazılmıştır. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. İlgili önceki işlevleri uygulamak yerine artık defaultViewModelProviderFactory ve defaultViewModelCreationExtras özelliklerini geçersiz kılması gerekir. (Iaed9c, b/240298691)
  • Observer artık Kotlin dilinde yazılmış. Analytics'in onChanged() yöntemi, parametresi için artık value adını kullanıyor. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher ve ProcessLifecycleOwner artık Kotlin dilinde (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691) yazılıyor

Sürüm 2.6.0-alpha04

11 Ocak 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 yayınlandı. 2.6.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • LiveData artık LiveData üzerinde hiç açık bir değerin ayarlanıp ayarlanmadığını gösteren yeni bir isInitialized özelliği içeriyor. Bu özellik, hiç değer belirlenmemiş veya açık bir null değeri olmadığı için liveData.value, null döndüren bir değer arasında ayrım yapabilmenizi sağlıyor. (Ibd018)

API Değişiklikleri

  • lifecycle-runtime-compose collectAsStateWithLifecycle() API'leri artık deneysel durumda değil. (I09d42, b/258835424)
  • Duraklatma sevk görevlisinin kullanılması bazı durumlarda kaynakların israfına neden olabileceği için Lifecycle.launchWhenX yöntemleri ve Lifecycle.whenX yöntemleri kullanımdan kaldırıldı. Lifecycle.repeatOnLifecycle kullanılması önerilir. (Iafc54, b/248302832)

Kotlin Dönüşümleri

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

Hata Düzeltmeleri

  • get() yanlış sınıfla arandığında SavedStateHandle, ClassCastException ile kilitlenme sorunu yaşamıyor türü. (I6ae7c)

Sürüm 2.6.0-alpha03

24 Ekim 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 yayınlandı. 2.6.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Farklı Yaşam Döngüsü modüllerinin amaçlandığı şekilde çalışmayan modülleriyle ilgili sorun düzeltildi. (I18d0d, b/249686765)
  • LifecycleRegistry.moveToState() tarafından gönderilen hatalar artık, geliştiricileri hataya neden olan bileşen hakkında bilgilendiren daha yararlı bir hata mesajı içeriyor. (Idf4b2, b/244910446)

Sürüm 2.6.0-alpha02

7 Eylül 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 yayınlandı. 2.6.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • Lifecycle yapıları artık, birbirine bağlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlamalar içeriyor. Böylece, biri yükseltildiğinde diğer bağımlılıklar da otomatik olarak yükseltiliyor. b/242871265
  • FlowLiveData.asFlow(), aşağıdakilerin sağlandığından emin olmak için artık kendi Channel uygulamasını kullanmak yerine bir callbackFlow oluşturuyor: ileti dizisi güvenliği ve bağlam koruması. (I4a8b2, b/200596935)
  • FlowLiveData işlevinin asLiveData işlevi, artık StateFlow oluştururken başlangıç değerini koruyacak yeni LiveData nesnesini tanımlayın. (I3f530, b/157380488)
  • Yaşam döngüsü 2.5.1'ten: AndroidViewModelFactory özel uygulamaları, durum bilgili oluşturucuyu Lifecycle 2.4+ (I5b315, b/238011621) ile kullanırken artık create(modelClass) işlevini doğru şekilde çağırıyor.

Sürüm 2.6.0-alpha01

29 Haziran 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 yayınlandı. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Akışlardan toplanan ve en son değerini, yaşam döngüsüne duyarlı bir şekilde Oluşturma Durumu olarak temsil eden ve StateFlow ve Flow collectAsStateWithLifecycle uzantısına yeni bir uzantı eklendi. Yaşam döngüsü en azından belirli bir Lifecycle.State içinde olduğunda akış toplanır ve yeni emisyon, Eyaletin 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 Eyalet değeri güncellenmez. (I1856e, b/230557927)

Sürüm 2.5

Sürüm 2.5.1

27 Temmuz 2022

androidx.lifecycle:lifecycle-*:2.5.1 yayınlandı. Sürüm 2.5.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • AndroidViewModelFactory özel uygulamaları, Lifecycle 2.4+ ile durum bilgili AndroidViewModelFactory oluşturucusu kullanıldığında artık create(modelClass) işlevini doğru şekilde çağırıyor. (I5b315, b/238011621)

Sürüm 2.5.0

29 Haziran 2022

androidx.lifecycle:lifecycle-*:2.5.0 yayınlandı. 2.5.0 sürümü bu kaydetmeleri içerir.

2.4.0'dan bu yana önemli değişiklikler

  • SavedStateHandle, LiveData kullanımına alternatif olarak değer değişikliklerini izlemek için Kotlin StateFlow değeri döndüren bir getStateFlow() API'si sunuyor.

  • ViewModel CreationExtras - Özel ViewModelProvider.Factory yazarken, sırasıyla Application veya SavedStateHandle erişimi elde etmek için AndroidViewModelFactory ya da AbstractSavedStateViewModelFactory süresini uzatmak gerekmiyor. Bunun yerine, bu alanlar yeni create aşırı yüklemesi ile her ViewModelProvider.Factory alt sınıfına CreationExtras olarak sağlanır: create(Class<T>, CreationExtras). Bu ekstralar, sırasıyla 1.5.0 Etkinliği ve Parça 1.5.0 kullanılırken Etkinliğiniz veya Parçanız tarafından otomatik olarak sağlanır.

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

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

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

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • onCleared() üzerinde herhangi bir manuel çalışma gerektirmeden ViewModel temizlendiğinde kapatılacak ViewModel öğesine bir veya daha fazla Closeable nesnesi eklemenize olanak tanıyan addCloseable() API'si ve yeni oluşturucu aşırı yüklemesi eklendi.

    Örneğin, ViewModel'e ekleyebileceğiniz ancak test yoluyla kontrol edebileceğiniz eş zamanlı bir kapsam oluşturmak için Closeable uygulayan bir CoroutineScope oluşturabilirsiniz:

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

    Daha sonra, viewModelScope ile aynı kullanım ömrünü korurken ViewModel oluşturucunuzda kullanılabilir:

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

Davranış değişiklikleri

  • Lifecycle.State, INITIALIZED konumundan DESTROYED konumuna taşınmaya çalışıldığında artık her zaman IllegalStateException hatası verilir. , Lifecycle öğesine ekli bir gözlemcinin olup olmadığıyla ilgili verileri sunar.
  • LifecycleRegistry, DESTROYED durumuna ulaştığında gözlemcilerini temizler.

Sürüm 2.5.0-rc02

15 Haziran 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 yayınlandı. 2.5.0-rc02 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • ComposeOnly Yaşam Döngüsü bağımlılarının önceki sürümleri 2.5 ve üzeri sürümlerle karıştırılırken ViewModelProvider artık kilitlenmez. (I81a66, b/230454566)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 yayınlandı. Sürüm 2.5.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • MediatorLiveData.addSource(), null kaynağını gözlemcilere yaymak yerine artık bir null kaynağı ilettiğinde NullPointerException gönderiyor.(Ibd0fb, b/123085232)

Sürüm 2.5.0-beta01

20 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 yayınlandı. Sürüm 2.5.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • SavedStateHandle içinde kalıcı durum için anahtar olarak özellik adlarını kullanmak üzere SavedStateHandle.saveable mülk yetkileri eklendi (I8bb86, b/225014345)

Hata Düzeltmeleri

  • Birincil olmayan alt gezinme sekmesinde bir NavHost öğesinin başka bir NavHost içine yerleştirilmesinin, birden çok arka grup kullanıldığında IllegalStateException ile sonuçlanmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)

Sürüm 2.5.0-alpha06

6 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 yayınlandı. 2.5.0-alpha06 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Şu süre için SavedStateHandle.saveable öğesine deneysel MutableState aşırı yüklemesi ekleyin: rememberSaveable ile parite (I38cfe, b/224565154)

API Değişiklikleri

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

Hata Düzeltmeleri

  • SavedStateHandleController nedeniyle oluşan 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ınlandı. 2.5.0-alpha05 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose modülü artık SavedStateHandle içindeki değerlerin rememberSaveable tarafından kullanılan kayıtlı örnek durumuyla doğru şekilde entegre edilmesini sağlayan deneysel bir API olan SavedStateHandleSaver özelliğini sunuyor. (Ia88b7, b/195689777)

API Değişiklikleri

  • Java'daki Yaşam Döngüsü 2.3 ve daha yeni Yaşam Döngüsü sürümleriyle ilgili bir uyumluluk sorunu düzeltildi. (I52c8a, b/219545060)

Hata Düzeltmeleri

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

Sürüm 2.5.0-alpha04

9 Mart 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 yayınlandı. 2.5.0-alpha04 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

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

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 yayınlandı. Sürüm 2.5.0-alpha03 bu kaydetmeleri içerir.

Yeni Özellikler

  • addCloseable() API ve yeni yüklemenize bir veya daha fazla kod eklemenizi sağlayan ViewModel öğesine kullanılacak Closeable nesne ViewModel gerektirmeden temizlendiğinde kapanır onCleared() kapsamındaki tüm manuel işler. (I55ea0)
  • lifecycle-viewmodel artık bir İşleme için lambda eklemenize olanak tanıyan InitializerViewModelFactory belirli ViewModel sınıfları (birincil veri olarak CreationExtras kullanılıyor) kaynak. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose artık şu özelliklere sahip bir viewModel() API'si sunuyor: bir lambda fabrikası kullanarak bir ViewModel örneği oluşturur. özel bir ViewModelProvider.Factory oluşturulmasını gerektirir. (I97fbb, b/216688927)

API Değişiklikleri

  • Artık şunun için CreationExtras ile bir ViewModel oluşturabilirsiniz: lifecycle-viewmodel-compose. (I08887, b/216688927)

Davranış değişiklikleri

  • Lifecycle.State, INITIALIZED konumundan şu konuma taşınmaya çalışılıyor: DESTROYED artık ne olursa olsun her zaman IllegalStateException atacak , Lifecycle öğesine ekli bir gözlemcinin olup olmadığıyla ilgili verileri sunar. (I7c390, b/177924329)
  • LifecycleRegistry, şu işlemleri yaptığında artık gözlemcilerini temizleyecek: DESTROYED durumuna ulaşmak. (I4f8dd, b/142925860)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 yayınlandı. 2.5.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • SavedStateHandle ve SavedStateViewModelFactory, Kotlin'e dönüştürüldü. Bu durum, her iki sınıftaki jeneriklerin nulllanabilirliğini iyileştirdi. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • LiveData switchMap işlevi parametresi artık null yapılabilir bir çıktıya sahip. (I40396, b/132923666)
  • LiveData -ktx uzantılarında artık @CheckResult bu çağrılar sırasında sonucun kullanılmasını zorunlu kılmak için işlevlerine dahildir. (Ia0f05, b/207325134)

Davranış değişiklikleri

  • SavedStateHandle, aşağıdaki durumlarda defaultValue değerini düzgün şekilde depolar: belirtilen anahtar için değer yok. (I1c6ce, b/178510877)

Hata Düzeltmeleri

  • Yaşam Döngüsü 2.4.1 için: ProcessLifecycleInitializer, StartupException tetiklemesini engelleyen düzeltmelerin varsayılan olarak kullanılabilir olmasını sağlamak için lifecycle-process, Başlangıç 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724)
  • Özel AndroidViewModel sınıfları için artık daha iyi bir hata mesajı gösterilmektedir parametrelerini yanlış sıraya sokup bir ViewModel oluşturmayı deneyin. (I340f7, b/177667711)
  • Artık bir uygulama ayarlamadan AndroidViewModelFactory kullanarak CreationExtras aracılığıyla bir görünüm modeli oluşturabilirsiniz. (I6ebef, b/217271656)

Sürüm 2.5.0-alpha01

26 Ocak 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 yayınlandı. Sürüm 2.5.0-alpha01 bu kaydetmeleri içerir.

ViewModel CreationExtras

Bu sürümle, ViewModel yapısının yeniden yapılandırılması için zemin hazırlıyoruz. Her biri ilave işlevler ekleyen (AndroidViewModelFactory üzerinden Application oluşturucu parametresine izin veren, SavedStateViewModelFactory ve AbstractSavedStateViewModelFactory aracılığıyla SavedStateHandle oluşturucu parametresine izin veren) ViewModelProvider.Factory ürününün katı bir alt sınıf grubu yerine, yeni bir kavram olan CreationExtras'u temel alan durum bilgisiz fabrikalar dünyasına geçiş yapıyoruz. (Ia7343, b/188691010, b/188541057)

Bu değişiklikle birlikte, ViewModelProvider artık önceki create(Class<T>) yöntemine (ViewModelProvider.Factory) doğrudan arama yapmayacak. Bunun yerine, yeni bir create aşırı yüklemesi çağrılıyor: create(Class<T>, CreationExtras). Yani, ViewModelProvider.Factory örneğinin doğrudan uygulanması artık şu yeni CreationExtras öğelerinin her birine erişebilir:

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

Bu ekstra özellikler 1.5.0-alpha01 Etkinliği, 1.5.0-alpha01 Parçası ve Gezinme 2.5.0-alpha01 kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların önceki bir sürümünü kullanırsanız CreationExtras boş olur. Mevcut ViewModelProvider.Factory alt sınıflarının tümü, hem bu kitaplıkların önceki sürümleri tarafından kullanılan eski oluşturma yolunu hem de bundan sonra kullanılacak CreationExtras yolunu destekleyecek şekilde yeniden yazılmıştır.

Bu CreationExtras, Fabrika alt sınıflarının katı bir hiyerarşisine bağlı kalmadan her bir ViewModel öğesine yalnızca ihtiyacınız olan bilgileri ileten bir ViewModelProvider.Factory oluşturmanıza olanak tanır:

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

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

Özel CreationExtras, ComponentActivity veya Fragment içinde getDefaultViewModelCreationExtras() geçersiz kılarak sağlanabilir ve böylece özel ViewModelProvider.Factory için yerleşik bir destekli ekleme biçiminde kullanılabilir. Bu ekstra özellikler, doğrudan ViewModelProvider ile veya by viewModels() ve by activityViewModels() Kotlin özellik uzantıları kullanılırken özel Fabrikanızda otomatik olarak kullanıma sunulur. (I79f2b, b/207012584, b/207012585, b/207012490)

Hata Düzeltmeleri

  • Varsayılan değerin sağlanmasıyla ilgili bir sorun düzeltildi işlemden sonra SavedStateHandle yeniden görünür hatta bu durum, ölüm ve eğlence amaçlı olduğunun SavedStateHandle grubundan kaldırıldı. Sonuç olarak bu, SavedStateHandle artık varsayılanları birleştirmeyecek değerleri ve geri yüklenen değerleri birlikte kullanmak yerine, geri yüklenen değerleri doğru kaynak olarak görmelidir. (I53a4b)

Sürüm 2.4

Sürüm 2.4.1

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.4.1 yayınlandı. Sürüm 2.4.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Yaşam Döngüsü 2.5.0-alpha01'ndan geri bağlanmış: Varsayılan değerin sağlanmasıyla ilgili bir sorun düzeltildi SavedStateHandle etiketi, işlemden sonra tekrar hatta bu durum, ölüm ve eğlence amaçlı olduğunun SavedStateHandle grubundan kaldırıldı. Sonuç olarak bu, SavedStateHandle artık varsayılanları birleştirmeyecek değerleri ve geri yüklenen değerleri birlikte kullanmak yerine, geri yüklenen değerleri doğru kaynak olarak görmelidir. (I53a4b)
  • lifecycle-process artık ProcessLifecycleInitializer kullanımının StartupException değerine neden olacağı durumlarda regresyonu düzelten Androidx Startup 1.1.1 sürümüne bağımlı. (b/216490724)

Sürüm 2.4.0

27 Ekim 2021

androidx.lifecycle:lifecycle-*:2.4.0 yayınlandı. 2.4.0 sürümü bu kaydetmeleri içerir.

2.3.0'dan bu yana önemli değişiklikler

  • @OnLifecycleEvent desteği sonlandırıldı. Bunların yerine LifecycleEventObserver veya DefaultLifecycleObserver kullanılmalıdır.
  • androidx.lifecycle:lifecycle-viewmodel-compose kitaplığı eklendi. viewModel() composable ve LocalViewModelStoreOwner sunar.
    • Kaynak yıkıcı değişiklik: ViewModelProvider, Kotlin dilinde yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık null değer atanabilir genele izin vermiyor.
  • androidx.lifecycle:lifecycle-runtime-ktx uygulamasına yeni eş yordam API'si eklendi:
  • Lifecycle.repeatOnLifecycle, yaşam döngüsü en azından belirli bir durumda olduğunda eş yordamdaki bir kod bloğunu yürüten API'dir. Yaşam döngüsü hedef duruma girip çıktıkça engelleme iptal edilir ve yeniden başlatılır.
  • Flow.flowWithLifecycle, yaşam döngüsü en azından belirli bir durumda olduğunda yukarı akıştan değerler yayan API.
  • DefaultLifecycleObserver, lifecycle.lifecycle-common-java8 kuruluş biriminden lifecycle.lifecycle-common kuruluş birimine taşındı. lifecycle.lifecycle-common-java8artık lifecycle.lifecycle-common ek işlev sunmadığı için bu işleve duyulan bağımlılık lifecycle.lifecycle-common ile değiştirilebilir.
  • lifecycle-viewmodel-ktx eklentisindeki eş yordam olmayan API, lifecycle-viewmodel modülüne taşındı.
  • lifecycle-process, ProcessLifecycleOwner uygulamasını başlatmak için artık androidx.startup kullanıyor.

    Bu işlem daha önce androidx.lifecycle.ProcessLifecycleOwnerInitializer tarafından yapılıyordu.

    İlk kullanıma hazırlamak için kullanılan ContentProvider tools:node="remove" kullandıysanız yoksa aşağıdaki işlemleri gerçekleştirmeniz gerekir.

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

    (veya)

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

Sürüm 2.4.0-rc01

29 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01, Yaşam Döngüsü 2.4.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 2.4.0-rc01 bu kaydetmeleri içerir.

Sürüm 2.4.0-beta01

15 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 yayınlandı. Sürüm 2.4.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • @OnLifecycleEvent desteği sonlandırıldı. LifecycleEventObserver veya Onun yerine DefaultLifecycleObserver kullanılmalıdır. (I5a8fa)
  • DefaultLifecycleObserver androidx.lifecycle.lifecycle-common-java8 konumundan şuna taşındı: androidx.lifecycle.lifecycle-common. androidx.lifecycle.lifecycle-common-java8 artık androidx.lifecycle.lifecycle-common dışında ek işlev sunmadığından bu işleve duyulan bağımlılık androidx.lifecycle.lifecycle-common ile değiştirilebilir. (I021aa)
  • lifecycle-viewmodel-ktx eklentisindeki eş yordam olmayan API, lifecycle-viewmodel modülü. (I6d5b2)

Harici Katkı

  • ViewModel dokümanlarındaki bir türü düzelttiğiniz için dmitrilc'e teşekkür ederiz. (#221)

Sürüm 2.4.0-alpha03

4 Ağustos 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 yayınlandı. 2.4.0-alpha03 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Kaynağı bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık null değere izin vermiyor genel. (I9b9f6)

Davranış Değişiklikleri

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

Harici Katkı

  • repeatOnLifecycle dokümanlarındaki kod snippet'lerini düzelttiğiniz için chao2zhang ile teşekkür ederiz. #205.

Sürüm 2.4.0-alpha02

16 Haziran 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 yayınlandı. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • lifecycle-runtime-ktx için, onStart() veya onResume() içinde repeateOnLifecycle öğesinin hatalı şekilde kullanıldığını algılayan yeni bir RepeatOnLifecycleWrongUsage hata analizi denetimi eklendi. (706078, b/187887400)

API Değişiklikleri

  • LifecycleOwner.addRepeatingJob API'si şurada kaldırıldı: yapısala saygı gösteren Lifecycle.repeatOnLifecycle daha kolay akıl yürütebiliyor. (I4a3a8)
  • Diğer androidx.startup.Initializer öğelerinin bunları bağımlılık olarak kullanabilmesi için ProcessLifecycleInitializer öğesini herkese açık hale getirin. (I94c31)

Hata Düzeltmeleri

  • Alanda değiştiriciler olduğunda NullSafeMutableLiveData hata analizi kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616)
  • Genel öğeler kullanılırken NullSafeMutableLiveData hata analizi kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)

Harici Katkı

  • NullSafeMutableLiveData hata analizi kontrolünü iyileştirdiğiniz için maxsav'a teşekkür ederiz. (#147, b/183696616)
  • NullSafeMutableLiveData hata analizi kontrolünü iyileştirdiğiniz için kozaxinan'a teşekkür ederiz. (#161, b/184830263)

Sürüm 2.4.0-alpha01

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 yayınlandı. Sürüm 2.4.0-alpha01 bu kaydetmeleri içerir.

Davranış Değişiklikleri

  • lifecycle-process, ProcessLifecycleOwner uygulamasını başlatmak için artık androidx.startup kullanıyor.

    Bu işlem daha önce androidx.lifecycle.ProcessLifecycleOwnerInitializer tarafından yapılıyordu.

    İlk kullanıma hazırlamak için kullanılan ContentProvider tools:node="remove" kullandıysanız yoksa aşağıdaki işlemleri gerçekleştirmeniz gerekir.

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

    (veya)

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

API Değişiklikleri

  • Lifecycle.repeatOnLifecycle API kullanılarak yaşam döngüsü en az belirli bir durumda olduğunda yukarı akış akışından değerler yayan bir Flow.flowWithLifecycle API eklendi. Bu, yine yeni LifecycleOwner.addRepeatinJob API'nin bir alternatifidir. (I0f4cd)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.3.1'den itibaren: NonNullableMutableLiveData lint kuralı artık düzgün bir şekilde null değeri farklı olan alan değişkenlerini birbirinden ayırt etmek için kullanılır. (b/169249668)

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

Sürüm 1.0.0-alpha07

16 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu kaydetmeleri içerir.

Çağlık API Değişiklikleri

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

Sürüm 1.0.0-alpha06

2 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.

Oluşturma'nın 1.0.0-beta08 sürümüyle uyumlu olacak şekilde güncellendi.

Sürüm 1.0.0-alpha05

18 Mayıs 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Oluşturma'nın 1.0.0-beta07 sürümüyle uyumlu olacak şekilde güncellendi.

Hata Düzeltmeleri

  • ui-test-manifest ve ui-tooling-data artık Android 12 (I6f9de, b/184718994) ile uyumlu

Sürüm 1.0.0-alpha04

7 Nisan 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu kaydetmeleri içerir.

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

  • Bu sürümde androidx.hilt:hilt-navigation-compose ve androidx.navigation:navigation-compose izin veriliyor androidx.compose.compiler:compiler:1.0.0-beta04 ve androidx.compose.runtime:runtime:1.0.0-beta04 üzerindeki bağımlılıkları senkronize edin. 1.0.0 için derleyici ile çalışma zamanının eşleşmesi gerekir.

Sürüm 1.0.0-alpha03

10 Mart 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current artık şu sonucu döndürüyor: daha iyi belirlemek için null değer atanabilir ViewModelStoreOwner mevcut durumda ViewModelStoreOwner olup olmadığını bileşimi. ViewModelStoreOwner gerektiren API'ler, örneğin viewModel() ve NavHost olarak bir istisna olsa da (ViewModelStoreOwner ayarlanmamışsa) (Idf39a)

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

24 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner artık şunları yapabilecek bir provides işlevine sahip: asProvidableCompositionLocal() API'nin yerini alarak CompositionLocalProvider ile kullanılmalıdır. (I45d24)
ziyaret edin.

Yaşam Döngüsü-Viewmodel-Oluşturma Sürümü 1.0.0-alpha01

10 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • viewModel() composable ve LocalViewModelStoreOwner, androidx.compose.ui.viewinterop konumundan androidx.lifecycle.viewmodel.compose paketindeki bu yapıya taşındı. (I7a374)
ziyaret edin.

Sürüm 2.3.1

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

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.3.1 yayınlandı. Sürüm 2.3.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData lint kuralı artık düzgün şekilde çalışabilir null değeri farklı olan alan değişkenlerini birbirinden ayırt etmek için kullanılır. (b/169249668)

Sürüm 2.3.0

Sürüm 2.3.0

10 Şubat 2021

androidx.lifecycle:lifecycle-*:2.3.0 yayınlandı. 2.3.0 sürümü bu kaydetmeleri içerir.

2.2.0'dan bu yana önemli değişiklikler

  • SavedStateHandle ayrıştırılamayan sınıflar için destek: SavedStateHandle artık belirli bir anahtar için setSavedStateProvider() yöntemini çağırmanıza olanak tanıyarak geç serileştirmeyi destekler. Bu şekilde, SavedStateHandle durumunu kaydetmesi istendiğinde saveState() için geri çağırma yapılacak bir SavedStateProvider sağlanır. Ayrıştırılamayan sınıfları kaydetme başlıklı makaleyi inceleyin.
  • Yaşam Döngüsü Davranışı Yaptırımı:
    • LifecycleRegistry artık DESTROYED işlemini terminal durumu olarak zorunlu kılar.
    • LifecycleRegistry artık kendi yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir gereklilikti. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında kilitlenmelerin yakalanmasını zorlaştırıyordu. Kendi bileşenlerinize ait LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrollerin kapsamı dışında kalmayı seçebilirsiniz. Ancak bu LifecycleRegistry öğesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
  • Yaşam Döngüsü Durumu ve Olay Yardımcıları: State ve geçiş yönü verildiğinde Event oluşturmak için Lifecycle.Event öğesine downFrom(State), downTo(State), upFrom(State), upTo(State) statik yardımcı yöntemleri eklendi. Yaşam döngüsünün doğrudan Event sonrasında geçireceği State sağlayan getTargetState() yöntemi eklendi.
  • withStateAtLeast: Yaşam döngüsü durumu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan kod bloğunu çalıştıran, ardından sonuçla devam eden Lifecycle.withStateAtLeast API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir sevk görevlisi kullanmadıkları için mevcut when* yöntemlerinden farklıdır. (aosp/1326081)
  • ViewTree API'ler: Yeni ViewTreeLifecycleOwner.get(View) ve ViewTreeViewModelStoreOwner.get(View) API, View örneği verildiğinde sırasıyla LifecycleOwner ve ViewModelStoreOwner içeren öğeleri almanıza olanak tanır. Bu özelliği doğru şekilde doldurmak için 1.2.0 Etkinliği ile 1.3.0 Parçası'na ve AppCompat 1.3.0-alpha01 ya da sonraki bir sürüme geçmeniz gerekir. findViewTreeLifecycleOwner ve findViewTreeViewModelStoreOwner Kotlin uzantıları sırasıyla lifecycle-runtime-ktx ve lifecycle-viewmodel-ktx için kullanılabilir.
  • LiveData.observe() Kotlin uzantısının kullanımdan kaldırılması: lambda söz dizimini kullanmak için gereken LiveData.observe() Kotlin uzantısı, Kotlin 1.4 kullanılırken gerekli olmadığı için kullanımdan kaldırıldı.

Sürüm 2.3.0-rc01

16 Aralık 2020

androidx.lifecycle:lifecycle-*:2.3.0-rc01 yayınlandı. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • SavedStateHandle için keys() yöntemi, durum kaydedilmeden önce ve kaydedildikten sonra tutarlı hale geldi. Artık set() ve getLiveData() ile kullanılan anahtarların yanı sıra 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ınlandı. Sürüm 2.3.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • LiveData.observe() Kotlin uzantısı lambda söz dizimini kullanmak için gerekli olan kod, Kotlin 1.4'ü kullanırken gerekli değildir. (I40d3f)

Hata Düzeltmeleri

Dokümanlardaki Değişiklikler

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

Sürüm 2.3.0-alpha07

19 Ağustos 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 yayınlandı. 2.3.0-alpha07 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.3.0-alpha06

22 Temmuz 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 yayınlandı. 2.3.0-alpha06 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • State ve geçiş yönü verildiğinde Event oluşturmak için Lifecycle.Event hedefine downFrom(State), downTo(State), upFrom(State), upTo(State) statik yardımcı yöntemleri eklendi. Yaşam döngüsünün doğrudan Event sonrasında geçireceği State sağlayan getTargetState() yöntemi eklendi. (I00887)
  • Yaşam döngüsü durumunu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan bir kod bloğunu çalıştıran, ardından devam ettirilen Lifecycle.withStateAtLeast API'leri eklendi yardımcı olur. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermedikleri ve özel bir sevk görevlisi kullanmadıkları için mevcut when* yöntemlerinden farklıdır. (aosp/1326081)

Davranış Değişiklikleri

  • LifecycleRegistry artık DESTROYED işlemini terminal durumu olarak zorunlu kılar. (I00887)
  • LifecycleRegistry artık kendi yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman bir gereklilikti. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında kilitlenmelerin yakalanmasını zorlaştırıyordu. Kendi bileşenlerinize ait LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrollerin kapsamı dışında kalmayı açıkça seçebilirsiniz ancak bu LifecycleRegistry öğesine farklı iş parçacıklarından (Ie7280, b/137392809) erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir

Hata Düzeltmeleri

  • NullSafeMutableLiveData oyunundaki bir kilitlenme düzeltildi. (b/159987480)
  • lifecycle-livedata-core-ktx (ve özellikle NullSafeMutableLiveData) ile paketlenen Lint kontrolleri için ObsoleteLintCustomCheck düzeltildi. (b/158699265)

Sürüm 2.3.0-alpha05

24 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 yayınlandı. 2.3.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • LiveData, onActive() veya onInactive() için yinelenen çağrıları önleyerek artık reentrant durumlarda daha iyi işlem sağlıyor. (b/157840298)
  • Android Studio 4.1 Canary 6 veya sonraki sürümleri kullanılırken Lint denetimlerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)

Sürüm 2.3.0-alpha04

10 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 yayınlandı. 2.3.0-alpha04 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData Lint kontrolündeki bir kilitlenme düzeltildi. (b/157294666)
  • NonNullableMutableLiveData Lint kontrolü artık, boş olmayan türde bir parametreyle 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 serbest bırakıldı. 2.3.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • SavedStateHandle artık belirli bir anahtar için setSavedStateProvider() yöntemini çağırmanıza izin vererek geç serileştirmeyi desteklemektedir. Bu özellik, SavedStateHandle öğesinin durumunu kaydetmesi istendiğinde saveState() çağrısını alacak bir SavedStateProvider sağlar. (b/155106862)
  • Yeni bir ViewTreeViewModelStoreOwner.get(View) API'sı, verilen View örneğini içeren ViewModelStoreOwner öğesini almanızı sağlar. Bu alanı doğru şekilde doldurmak için 1.2.0-alpha05 Etkinliği, 1.3.0-alpha05 Parçası ve AppCompat 1.3.0-alpha01'a yükseltme yapmanız gerekir. lifecycle-viewmodel-ktx klasörüne 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ınlandı. 2.3.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • SavedStateViewModelFactory artık, hazır olmayan ve AndroidViewModel desteğinin gerekli olmadığı durumları daha iyi desteklemek için oluşturucuya null Application iletmenize izin veriyor. (aosp/1285740)

Hata Düzeltmeleri

  • API 28 ve önceki cihazlarda sınıf doğrulama hatası önlenerek baştan başlatma performansı iyileştirildi. (aosp/1282118)

Sürüm 2.3.0-alpha01

4 Mart 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 yayınlandı. Sürüm 2.3.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Yeni bir ViewTreeLifecycleOwner.get(View) API'sı, verilen View örneğini içeren LifecycleOwner öğesini almanızı sağlar. Bunu doğru şekilde doldurmak için 1.2.0-alpha01 Etkinliği ve 1.3.0-alpha01 Parçası'na yükseltmeniz gerekir. lifecycle-runtime-ktx bölgesinde findViewTreeLifecycleOwner Kotlin uzantısı mevcut. (aosp/1182361, aosp/1182956)
  • Kotlin'de boş olmayan olarak tanımlanmış bir MutableLiveData için null değeri ayarlarken sizi uyaran yeni bir Lint kontrolü eklendi. Bu, livedata-core-ktx veya livedata-ktx yapıları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092)
  • LifecycleOwner öğesini uygulayan ve iş parçacığı açısından güvenli, değişebilir Lifecycle sağlayan bir TestLifecycleOwner sağlayan yeni bir lifecycle-runtime-testing yapısı mevcut. (aosp/1242438)

Hata düzeltmeleri

  • lifecycle-runtime yapısının artık benzersiz bir paket adı var. (aosp/1187196)
ziyaret edin.

Sürüm 2.2.0

ViewModel-Savedstate Sürüm 2.2.0

5 Şubat 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.

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

Sürüm 2.2.0

22 Ocak 2020

androidx.lifecycle:lifecycle-*:2.2.0 yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.

2.1.0'dan bu yana önemli değişiklikler

  • Yaşam Döngüsü Kotlin Entegrasyonu: Yeni lifecycle-runtime-ktx yapısı, yaşam döngüsü ve Kotlin eş yordamları arasında entegrasyon sağlar. lifecycle-livedata-ktx, eş yordamlardan yararlanacak şekilde genişletildi. Daha ayrıntılı bilgi için Kotlin eş yordamlarını Mimari Bileşenlerle kullanma konusuna bakın.
  • ViewModelProviders.of() desteğinin sonlandırılması: ViewModelProviders.of() desteği sonlandırıldı. 1.2.0 Parçası'nı kullanırken aynı işlevselliği elde etmek için yeni ViewModelProvider(ViewModelStoreOwner) oluşturucuya bir Fragment veya FragmentActivity aktarabilirsiniz.
  • lifecycle-extensions Yapının Kullanımdan Kaldırılması: Yukarıda belirtilen ViewModelProviders.of() sürümünün kullanımdan kaldırılmasıyla birlikte bu sürüm, lifecycle-extensions sürümündeki son API'nin kullanımdan kaldırılmasına işaret ediyor. Bu yapı artık tamamen kullanımdan kaldırılmış olarak kabul edilmelidir. lifecycle-extensions yerine lifecycle-extensions yerine ihtiyaç duyduğunuz belirli Yaşam Döngüsü yapılarına (ör. LifecycleService kullanıyorsanız lifecycle-service, ProcessLifecycleOwner kullanıyorsanız lifecycle-process) uymanızı öneririz. Çünkü lifecycle-extensions için gelecekte bir 2.3.0 sürümü yayınlanmayacaktır.
  • Gradle Artımlı Ek Açıklama İşleyici: Yaşam döngüsünün ek açıklama işlemcisi varsayılan olarak artımlıdır. Uygulamanız Java 8 programlama dilinde yazılmışsa bunun yerine DefautLifecycleObserver kullanabilirsiniz: ve Java 7 programlama dilinde yazılmıştır ve LifecycleEventObserver kullanabilirsiniz.

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 yayınlandı. Sürüm 2.2.0-rc03 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Sahte bir ViewModel, ViewModelStore içinde depolanıp daha sonra varsayılan fabrikayla sorgulandığında ortaya çıkan hata düzeltildi.
  • İlgili yaşam döngüsü etkinliği sırasında launchWhenCreated içinde Dispatchers.Main.immediate kullanımı ve benzer yöntemlerin eşzamanlı olarak çağrılması için sorunu düzeltin. (aosp/1156203)

Harici katkılar

  • Sorunu düzeltmeye yardımcı olduğu için Anders Järleberg'e teşekkür ediyoruz. (aosp/1156203)
  • Satır içi yürütme uygulamasını incelediği için Jetbrains'den Vsevolod Tolstopyatov'a teşekkür ederiz.

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

  • Yaşam Döngüsü Uzantıları artık 1.2.0-rc03. Parçayı kullanıyor.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 yayınlandı. 2.2.0-rc02 sürümü bu kaydetmeleri içerir.

Hata düzeltmeleri

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

Sürüm 2.2.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 yayınlandı. Sürüm 2.2.0-rc01 bu kaydetmeleri içerir.

Hata düzeltmeleri

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

Harici katkılar

  • Bu düzeltmeye katkıda bulunan Nicklas Ansman'a teşekkürler! (aosp/1145596)

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 yayınlandı. Sürüm 2.2.0-beta01 bu kaydetmeleri içerir.

Hata düzeltmeleri

Sürüm 2.2.0-alpha05

18 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 yayınlandı. 2.2.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Eş yordam canlı veri oluşturucuda bir yarış durumu düzeltildi. b/140249349

Sürüm 2.2.0-alpha04

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

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

Harici katkılar

  • Dispatchers.Main.immediate adlı evin kullanıma sunulmasına katkılarından dolayı Nicklas Ansman'a teşekkür ediyoruz. (aosp/1106073)

Sürüm 2.2.0-alpha03

7 Ağustos 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

API değişiklikleri

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

Sürüm 2.2.0-alpha02

2 Temmuz 2019

androidx.lifecycle:*:2.2.0-alpha02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

API değişiklikleri

  • LiveDataScope.initialValue, liveData blokunun mevcut yayınlanan değerini izleyecek LiveDataScope.latestValue ile değiştirildi.
  • liveData oluşturucuya, Duration türünde timeout parametreyi alan yeni bir aşırı yükleme eklendi

Sürüm 2.2.0-alpha01

7 Mayıs 2019

androidx.lifecycle:*:2.2.0-alpha01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Bu sürümde, yaşam döngüsü ve LiveData için Kotlin eş yordamları için destek sağlayan yeni özellikler eklendi. Bunlarla ilgili ayrıntılı belgelere buradan ulaşabilirsiniz.

ViewModel-SavedState Sürüm 1.0.0

Sürüm 1.0.0

22 Ocak 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 yayınlandı. 1.0.0 sürümü bu kaydetmeleri içerir.

1.0.0'daki önemli özellikler

  • Yeni SavedStateHandle sınıfı eklendi. Bu işlem, ViewModel sınıflarınızın kayıtlı duruma erişmesine ve katkıda bulunmasına olanak tanır. Bu nesne, ViewModel sınıfının oluşturucusunda alınabilir. Fragments ve AppCompatActivity tarafından varsayılan olarak sağlanan fabrikalar, SavedStateHandle öğesini otomatik olarak ekler.
  • AbstractSavedStateViewModelFactory eklendi. Bu sayede ViewModel cihazınız için özel fabrikalar oluşturabilir ve SavedStateHandle ürününe erişmelerini sağlayabilirsiniz.

ViewModel-Savedstate Sürüm 1.0.0-rc03

4 Aralık 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 yayınlandı. Sürüm 1.0.0-rc03 bu kaydetmeleri içerir.

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

  • Yaşam Döngüsü ViewModel SavedState artık 2.2.0-rc03 Yaşam Döngüsü'ne bağlı.

Viewmodel-Savedstate Sürüm 1.0.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.

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

  • Şimdi ise 2.2.0-rc02 yaşam döngüsüne bağlı.

ViewModel-SavedState Sürüm 1.0.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01, 1.0.0-beta01 şablonundan herhangi bir değişiklik yapılmadan yayınlandı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.

ViewModel-Savedstate Sürüm 1.0.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 yayınlandı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • SavedState ViewModel'e ilk kez Activity.onActivityResult() içinde erişildiğinde IllegalStateException ile sonuçlanabilecek sorun düzeltildi. (b/139093676)
  • AbstractSavedStateViewModelFactory kullanılırken 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ınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.

API değişiklikleri

  • SavedStateViewModelFactory artık AbstractSavedStateViewModelFactory öğesini genişletmiyor ve SavedStateHandle yalnızca bunu isteyen ViewModeller için oluşturuldu (aosp/1113593)

ViewModel-SavedState Sürüm 1.0.0-alpha03

7 Ağustos 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Çarpıcı Değişiklikler

ViewModel-SavedState Sürüm 1.0.0-alpha02

2 Temmuz 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Varsayılan değeri kabul eden SavedStateHandle.getLiveData() aşırı yüklemesi eklendi.

API Değişiklikleri

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

ViewModel-Savedstate Sürüm 1.0.0-alpha01

13 Mart 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 yayınlandı. Bu ilk sürüm için tam kayıt günlüğünü burada bulabilirsiniz.

Yeni özellikler

  • Artık ViewModels, kaydedilen duruma katkıda bulunabilir. Bunu yapmak için yeni kullanıma sunulan viewmodel fabrikasını SavedStateVMFactory kullanın ve ViewModel'iniz, parametre olarak SavedStateHandlenesne alan bir oluşturucuya sahip olmalıdır.

Sürüm 2.1.0

2.0.0'dan bu yana önemli değişiklikler

  • Yaşam döngüsü olaylarının akışının gerekli olduğu durumlar için LifecycleEventObserver eklendi. Gizli bir GenericLifecycleObserver sınıfı değil, herkese açık bir API'dir.
  • LiveData.observe yöntem ve Transformations.* yöntem için ktx uzantıları eklendi.
  • Kaynak LiveData değeri değiştirilene kadar değer üretmeyen yeni bir LiveData nesnesi oluşturan Transformations.distinctUntilChanged eklendi.
  • ViewModel.viewModelScope uzantı özelliği eklenerek ViewModelleri'ne eş yordam desteği eklendi.

Sürüm 2.1.0

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.1.0 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Sürüm 2.1.0-rc01

2 Temmuz 2019

androidx.lifecycle:*:2.1.0-rc01, androidx.lifecycle:*:2.1.0-beta01 şablonundan herhangi bir değişiklik yapılmadan yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.lifecycle:*:2.1.0-beta01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Yaşam döngüleri beta sürümüne yükseltildi: Önceki alfa sürümlerde kullanıma sunulan API'ler (ör. dönüşümler ve gözlemler için liveData uzantı işlevleri, mülk yetkisi ile ViewModel başlatma ve diğerleri) stabilize edildi ve değişmeyecek.

Sürüm 2.1.0-alpha04

3 Nisan 2019

androidx.lifecycle:*:2.1.0-alpha04 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

API değişiklikleri

  • Önemli değişiklik: by viewModels() ve by activityViewModels() özelliklerini destekleyen temel API, yalnızca bir ViewModelStoreOwner yerine doğrudan bir ViewModelStore desteği sağlayacak şekilde değiştirildi. (aosp/932932)

Sürüm 2.1.0-alpha03

13 Mart 2019

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

API değişiklikleri

  • ViewModelProvider.KeyedFactory kaldırıldı. ViewModelProvider.Factory ile birlikte ikinci arayüz, Kotlin by viewmodels {}'deki mülk yetkisi gibi yeni özelliklerle pek iyi sonuç vermedi. (aosp/914133)

Sürüm 2.1.0-alpha02

30 Ocak 2019

androidx.lifecycle 2.1.0-alpha02 yayınlandı.

API değişiklikleri

  • LifecycleRegistry artık, kullanımdan kaldırılan setState() yönteminin yerini alan bir setCurrentState() yöntemi içeriyor. (aosp/880715)

Hata düzeltmeleri

  • ViewModelStore öğesini içeren öğe temizlendiğinde örnek 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ınlandı.

Yeni özellikler

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

Sürüm 2.0.0

Sürüm 2.0.0

21 Eylül 2018

2.0.0 yaşam döngüsü, ViewModel'de 2.0.0-rc01 üzerinden yapılan bir hata düzeltmesiyle yayınlandı.

Hata Düzeltmeleri

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

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • Alt arayüzleri değil, yalnızca uygulamaları saklayan LifecycleObserver ProGuard kuralı düzeltildi b/71389427
  • Kod karartmaya ve daraltmaya izin veren ViewModel koruma kuralları düzeltildi

AndroidX öncesi sürümler

Yaşam Döngüsü'nün AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:

dependencies {
    def lifecycle_version = "1.1.1"

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

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

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

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

Sürüm 1.1.1

21 Mart 2018

Yalnızca bir küçük değişiklik: android.arch.core.util.Function, arch:runtime yerine arch:common taşındı. Böylece, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common bölümünde bulabilirsiniz.

lifecycle:common, lifecycle:runtime ürününün bir bağımlılığıdır. Dolayısıyla bu değişiklik, doğrudan lifecycle:runtime ürününü etkilemez, yalnızca sayfalandırmanın yaptığı gibi doğrudan lifecycle:common uygulamasına bağlı olan modülleri etkiler.

Sürüm 1.1.0

22 Ocak 2018

Paketleme Değişiklikleri

Yeni ve çok daha küçük bağımlılıklar artık mevcut:

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

API Değişiklikleri

  • Kullanımdan kaldırılan LifecycleActivity ve LifecycleFragment artık kaldırıldı. Lütfen şunu kullanın: FragmentActivity, AppCompatActivity veya Fragment desteği.
  • ViewModelProviders ve ViewModelStores etiketlerine @NonNull ek açıklama eklendi
  • ViewModelProviders oluşturucu desteği sonlandırıldı. Lütfen statik yöntemlerini doğrudan kullanın
  • ViewModelProviders.DefaultFactory desteği sonlandırıldı, lütfen ViewModelProvider.AndroidViewModelFactory kullanın
  • Statik ViewModelProvider.AndroidViewModelFactory.getInstance(Application) yöntemi, verileri almak için eklendi ViewModel ve AndroidViewModel örnekleri oluşturmaya uygun bir statik Factory.