Yaşam döngüsü

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

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

Yapı Kararlı sürüm Sürüm Adayı Beta Sürümü Alfa sürümü
lifecycle-* 2.9.1 - - -
lifecycle-viewmodel-navigation3 - - - 1.0.0-alpha03
Bu kitaplık en son 2 Temmuz 2025'te güncellenmiştir.

Bağımlılıkları bildirme

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

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Kotlin

Groovy

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

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

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

        // ViewModel integration with Navigation3
        implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03"

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

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

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

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

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

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

Kotlin

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

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

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

        // ViewModel integration with Navigation3
        implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03")

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

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

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

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

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

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

Java

Groovy

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

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

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Lifecycle ViewModel Navigation3 Version 1.0.0

Sürüm 1.0.0-alpha03

2 Temmuz 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03 ve androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03 yayınlandı. Sürüm 1.0.0-alpha03, bu commit'leri içerir.

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

Sürüm 1.0.0-alpha02

18 Haziran 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02 ve androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu commit'leri içerir.

Bağımlılık Güncellemeleri

Sürüm 1.0.0-alpha01

23 Mayıs 2025

androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Lifecycle ViewModel Navigation3, ViewModels ile entegrasyon sağlamak için Navigation3 ile birlikte oluşturulan yeni bir kitaplıktır. androidx.lifecycle:lifecycle-viewmodel-navigation3 yapısı, her NavEntry içeriğine benzersiz bir ViewModelStoreOwner sağlayan ViewModelStoreNavEntryDecorator öğesini sunar. Ayrıca, yapılandırıcıların yapılandırma değişiklikleriyle düzgün şekilde işlenmesini sağlamak için bir rememberViewModelStoreNavEntryDecorator() sağlar.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()

NavDisplay(
  ,
  entryDecorators =
  listOf(
    rememberSceneSetupNavEntryDecorator(),
    rememberSavedStateNavEntryDecorator(),
    viewModelDecorator
  )
)

Sürüm 2.9

Sürüm 2.9.1

4 Haziran 2025

androidx.lifecycle:lifecycle-*:2.9.1 iptal edilir. 2.9.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • SavedStateHandle.remove(key) durumlarının temizlenmemesi SavedStateHandle.getMutableStateFlow(key) sorununu düzeltir. (d5f939, b/418746333)

Sürüm 2.9.0

7 Mayıs 2025

androidx.lifecycle:lifecycle-*:2.9.0 iptal edilir. 2.9.0 sürümü bu commit'leri içerir.

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

  • androidx.lifecycle:lifecycle-viewmodel-testing KMP yapay nesnesi, ViewModels'yi bağımsız olarak test etmek için ViewModelScenario sınıfı sağlar. Ayrıca, onCleared ve SavedStateHandle desteğinin yanı sıra recreate() aracılığıyla işlem sonlandırma ve yeniden oluşturma testini de içerir.
  • MutableStateFlow iade etmek için getMutableStateFlow öğesini SavedStateHandle öğesine ekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir ve getLiveData ile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur.
  • CreationExtras artık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor. in, += ve + özelliklerinin CreationExtras ile birlikte kullanılmasına olanak tanır.

KotlinX Serialization Support

  • SavedState 1.3.0'e eklenen KotlinX Serialization desteğiyle birlikte, @Serializable sınıflarını SavedStateHandle içinde kolayca depolamak ve bu sınıfların işlem sonlandırılıp yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlamak için saved adlı tembel özellik temsilcisini kullanıma sunduk. saved temsilcisinin tembel olduğunu ve erişilene kadar init lambda'sını çağırmayacağını veya SavedStateHandle içine hiçbir şey kaydetmeyeceğini lütfen unutmayın.

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

Kotlin Multiplatform

  • lifecycle-testing modülü artık TestLifecycleOwner gibi API'ler de dahil olmak üzere KMP ile uyumlu.
  • lifecycle-viewmodel-savedstate modülü artık SavedStateHandle gibi API'ler de dahil olmak üzere KMP ile uyumlu.
  • androidx.compose.ui.platform.LocalLifecycleOwner artık ortak kaynak kümesinde kullanılabilir.
  • NewInstanceFactory artık JVM Desktop ve Android hedeflerinde kullanılabilir.

Davranış Değişiklikleri

  • Lifecycle.DESTROYED durumu son durumdur ve artık Lifecycle öğesini bu durumdan başka bir duruma taşımaya yönelik tüm girişimler IllegalStateException ile sonuçlanır.
  • SavedStateHandle artık döndürülen Bundle'nin boş olduğu SavedStateProvider.saveState()'yi içermiyor.

Sürüm 2.9.0-rc01

23 Nisan 2025

androidx.lifecycle:lifecycle-*:2.9.0-rc01 iptal edilir. 2.9.0-rc01 sürümü bu commit'leri içerir.

Sürüm 2.9.0-beta01

9 Nisan 2025

androidx.lifecycle:lifecycle-*:2.9.0-beta01 iptal edilir. 2.9.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Lifecycle ViewModel Compose artık Compose Runtime 1.7.1 ve sonraki sürümlerle aynı Kotlin Multiplatform kurulumunu kullanıyor. -desktop yapıları kaldırıldı, -jvmStubs ve -linuxx64Stubs yapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar. (I5cb14, b/406592090)

Bağımlılık Güncellemeleri

  • Bu kitaplık artık Kotlin 2.0 dil seviyesini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)
  • Lifecycle ViewModel Compose artık Compose 1.7.8'e bağlıdır. (I5cb14, b/406592090)

Sürüm 2.9.0-alpha13

26 Mart 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha13, önemli bir herkese açık değişiklik olmadan yayınlandı. 2.9.0-alpha13 sürümü bu commit'leri içerir.

Sürüm 2.9.0-alpha12

12 Mart 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha12 iptal edilir. 2.9.0-alpha12 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Desteklenen tüm KMP platformlarında ViewModelProvider.get öğesine @MainThread ek açıklaması ekleyin. (I7e8dd, b/397736115)
  • SavedState*Delegates öğesini SavedState*Delegate olarak yeniden adlandırın. (I8589b, b/399629301)

Sürüm 2.9.0-alpha11

26 Şubat 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha11 iptal edilir. 2.9.0-alpha11 sürümü bu commit'leri içerir.

API Değişiklikleri

  • SavedStateConfig parametresini saved() temsilcilerine ekleyin (I39b3a)

Sürüm 2.9.0-alpha10

12 Şubat 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha10 iptal edilir. 2.9.0-alpha10 sürümü bu commit'leri içerir.

API Değişiklikleri

  • MutableStateSerializer tutarındaki bütçeyi lifecycle-viewmodel-compose kampanyasından savedstate-compose kampanyasına taşıyın. (I4f690, b/378895074)

Harici Katkı (External Contribution)

  • Lifecycle::currentState işlevinin bileşimde çağrılmasıyla ilgili yeni bir Lint sorunu ekler. Bunun yerine, Yaşam Döngüsü durumundaki değişikliklerin yeniden oluşturmaya doğru şekilde neden olmasını sağlamak için currentStateAsalue().value işlevinin kullanılmasını önerir. Teşekkürler Steven Schoen! (Iad484)

Sürüm 2.9.0-alpha09

29 Ocak 2025

androidx.lifecycle:lifecycle-*:2.9.0-alpha09 iptal edilir. 2.9.0-alpha09 sürümü bu commit'leri içerir.

Yeni Özellikler

  • androidx.compose.runtime.MutableState öğesini serileştirmek için MutableStateSerializer ekleyin. (Idfc48, b/378895074)

API Değişiklikleri

  • Aşırı yüklenmiş SavedStateHandle.saved() temsilci işlevlerini varsayılan parametrelerle değiştirme (Icd1c1)
  • AbstractSavedStateViewModelFactory, her ViewModel için bir SavedStateHandle oluşturarak gereksiz ek yük oluşturduğu için kullanımdan kaldırılmıştır. Daha verimli ViewModel oluşturma için ViewModelProvider.Factory ile birlikte CreationExtras.createSavedStateHandle kullanın. (Ia920b, b/388590327)

Sürüm 2.9.0-alpha08

11 Aralık 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha08 iptal edilir. 2.9.0-alpha08 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Test edilen ViewModel ve ilişkili tüm bileşenleri yeniden oluşturarak bir Sistem İşlemi Ölümü simüle etmek için ViewModelScenario.recreate ekleyin. (Id6a69, b/381063087)
  • İlgili findViewTree API'leri aracılığıyla alınan LifecycleOwner ve ViewModelStoreOwner örnekleri artık bir görünümün bağlantısız üst öğeleri (ör. ViewOverlay) üzerinden çözümlenebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için Core'un sürüm notlarına veya ViewTree.setViewTreeDisjointParent bölümündeki dokümanlara bakın. (I800f4)

API Değişiklikleri

  • Adlandırmaları ve paket düzenini SavedStateRegistryOwnerDelegate ile daha tutarlı hale getirin (I8c135, b/376026744)

Hata Düzeltmeleri

  • Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır: -Xjspecify-annotations=strict (bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir). (Ie4340, b/326456246)
  • Doküman ViewModel.onCleared temizleme sırası. (I586c7, b/363984116)

Sürüm 2.9.0-alpha07

13 Kasım 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha07 iptal edilir. 2.9.0-alpha07 sürümü bu commit'leri içerir.

Kotlin Multiplatform Uyumluluğu

  • Lifecycle ViewModel SavedState artık KMP ile uyumlu. Bu, SavedStateHandle'ı ortak kodda kullanmanıza olanak tanır. (Ib6394, b/334076622)

KotlinX Serialization Support

  • SavedState 1.3.0-alpha05'e eklenen KotlinX Serialization desteğiyle birlikte, @Serializable sınıflarını SavedStateHandle içinde kolayca depolamak ve bu sınıfların işlem sonlandırılıp yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlamak için saved adlı tembel özellik temsilcisini kullanıma sunduk. saved temsilcisinin tembel olduğunu ve erişilene kadar init lambda'sını çağırmayacağını veya SavedStateHandle içine hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I47a88, b/376026744)

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

API Değişiklikleri

  • MutableStateFlow iade etmek için getMutableStateFlow öğesini SavedStateHandle öğesine ekleyin. Bu yeni işlev yalnızca anahtarla kullanılabilir ve getLiveData ile kullanılamaz. Aynı duruma erişmek için her ikisini de kullanmaya çalışırsanız bir istisna oluşturulur. (I04a4f, b/375408415)

Sürüm 2.9.0-alpha06

30 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha06 iptal edilir. 2.9.0-alpha06 sürümü bu commit'leri içerir.

Davranış Değişiklikleri

  • Lifecycle.DESTROYED durumu son durumdur ve artık Lifecycle öğesini bu durumdan başka bir duruma taşımaya yönelik tüm girişimler IllegalStateException ile sonuçlanır. (I116c4, b/370577987)
  • SavedStateHandle artık döndürülen Bundle'nin boş olduğu SavedStateProvider.saveState()'yi içermiyor. (I910b5, b/370577987)

Hata Düzeltmeleri

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

Sürüm 2.9.0-alpha05

16 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha05 sürümünde önemli bir değişiklik yok. 2.9.0-alpha05 sürümü bu commit'leri içerir.

Sürüm 2.9.0-alpha04

2 Ekim 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha04 iptal edilir. 2.9.0-alpha04 sürümü bu commit'leri içerir.

Kotlin Multiplatform

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

Sürüm 2.9.0-alpha03

18 Eylül 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha03 iptal edilir. 2.9.0-alpha03 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

Bağımlılık Güncellemeleri

Sürüm 2.9.0-alpha02

4 Eylül 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 iptal edilir. 2.9.0-alpha02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Harici Katkı (External Contribution)

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

Sürüm 2.9.0-alpha01

7 Ağustos 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 iptal edilir. 2.9.0-alpha01 sürümü bu commit'leri içerir.

Kotlin Multiplatform

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

Yeni Özellikler

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

API Değişiklikleri

  • Anonim CreationExtras.Key nesnelerin oluşturulmasını kolaylaştırmak için CreationExtras.Key() fabrika işlevini ekleyin. (I970ee)
  • CreationExtras artık Kotlin'de içeriklerin deyimsel olarak işlenmesini sağlamak için harita benzeri operatör aşırı yüklemelerini içeriyor. in, += ve + özelliklerinin CreationExtras ile birlikte kullanılmasına olanak tanır. (Ib4353)
  • CreationExtras artık equals, hashCode ve toString yöntemlerini uyguluyor. (Ib4353)
  • NewInstanceFactory artık JVM Desktop ve Android hedeflerinde kullanılabilir. (d3d0892)
  • Kotlin dilinin 2.0 sürümünde (I39df2) temel alınan uygulamayı güvenli bir şekilde kullanıma sunmak için satır içi uzantı özelliği

Hata Düzeltmeleri

  • AGP 7.3 veya sonraki sürümleriyle (ör. R8 sürümü 3.3) R8 kullanılırken ve AGP 8.1 veya sonraki sürümleriyle (ör. D8 sürümü 8.1) tüm derlemeler için yeni platform API'lerine erişimin manuel olarak ana hatlarının oluşturulması, API modelleme aracılığıyla otomatik olarak yapıldığından kaldırıldı. AGP kullanmayan müşterilerin D8 sürüm 8.1 veya sonraki bir sürüme güncellemeleri önerilir. Daha fazla bilgi için bu makaleye göz atın. (If6b4c, b/345472586)

Sürüm 2.8

Sürüm 2.8.7

30 Ekim 2024

androidx.lifecycle:lifecycle-*:2.8.7 iptal edilir. 2.8.7 sürümü bu commit'leri içerir.

API Değişiklikleri

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

Sürüm 2.8.6

18 Eylül 2024

androidx.lifecycle:lifecycle-*:2.8.6 iptal edilir. 2.8.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • NullSafeMutableLiveData Lint hatası, akıllı yayınlar için daha iyi destek sunarak yanlış pozitif sonuçları önler. (85fed6, b/181042665)

Bağımlılık Güncellemeleri

Sürüm 2.8.5

4 Eylül 2024

androidx.lifecycle:lifecycle-*:2.8.5 iptal edilir. 2.8.5 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Harici Katkı (External Contribution)

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

Sürüm 2.8.4

24 Temmuz 2024

androidx.lifecycle:lifecycle-*:2.8.4 iptal edilir. 2.8.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 2.8.3

1 Temmuz 2024

androidx.lifecycle:lifecycle-*:2.8.3 iptal edilir. 2.8.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 2.8.2

12 Haziran 2024

androidx.lifecycle:lifecycle-*:2.8.2 iptal edilir. 2.8.2 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 2.8.1

29 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.1 iptal edilir. 2.8.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • lifecycle-viewmodel-compose artık yalnızca compose-runtime ile ortak bağımlılığa sahip ve compose-ui ile ortak bağımlılığı kaldırıldı. Android yapısı, uyumluluk için compose-ui özelliğini korur. (aosp/3079334, b/339562627)
  • ViewModel'nın saveable entegrasyonu, özellik temsilcilerini kullanarak artık otomatik olarak oluşturulan anahtarın bir parçası olarak sınıf adını kullanıyor. Böylece, birden fazla sınıf aynı SavedStateHandle'ı kullandığında çakışmalar önleniyor. (aosp/3063463)

Sürüm 2.8.0

14 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0 iptal edilir. 2.8.0 sürümü bu commit'leri içerir.

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

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose kullanıcı arayüzü dışında kullanılabilmesi için Compose kullanıcı arayüzünden lifecycle-runtime-compose'e taşındı.
  • lifecycle-runtime-compose yapısı artık dropUnlessResumed ve dropUnlessStarted API'lerini içeriyor. Bu API'ler, LifecycleOwner değeri belirtilen Lifecycle.State değerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile birlikte kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope artık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi ve SupervisorJob() öğenizi ekleyebilir veya runTest içinde bulunan 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'de yeniden yazıldı ve artık Closeable yerine AutoClosable kullanılıyor. Artık AutoCloseable nesneleri eklemeyi destekliyor. Bu nesneler, getCloseable() üzerinden alınmalarını sağlayan bir key ile birlikte gelir.

  • LifecycleStartEffect ve LifecycleResumeEffect API'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığı DisposableEffect API ile aynı kural geçerlidir.

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

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

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

Lifecycle Kotlin Multiplatform Uyumluluğu

Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry içindeki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor.

Etkilenen yapılar:

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

ViewModel Kotlin Multiplatform Uyumluluğu

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

Bu değişikliğe uyum sağlamak için ViewModelProvider üzerindekiler gibi java.lang.Class<T> alan yöntemlerin artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntemi var.

Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:

  • ViewModelProvider örneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerine ViewModelProvider.create() yöntemleri aracılığıyla yapılır.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel Fabrikaların ViewModelProvider.Factory'dan genişletilmesi ve CreationExtras alan create yönteminin ya da viewModelFactory Kotlin DSL'sinin kullanılması önerilir.
  • JVM dışı platformlarda ViewModelProvider öğesini özel bir fabrika olmadan kullanmak UnsupportedOperationException ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext Linux).

Etkilenen yapılar:

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

Davranış Değişiklikleri

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

Bilinen Sorunlar

Sürüm 2.8.0-rc01

1 Mayıs 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 iptal edilir. 2.8.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • lifecycle-common sınıfları için temel profilin düzgün şekilde paketlenmemesine neden olan sorun düzeltildi. Bunlar artık lifecycle-runtime AAR'sında paketleniyor. (aosp/3038274, b/322382422)
  • ViewModel'e eklenen AutoCloseable örneklerinin temizlenmesinde istenmeden yapılan sıralama değişikliği düzeltildi. Önce addCloseable(String, AutoCloseable), sonra addClosable(AutoCloseable), sonra onCleared() olan önceki sıralama geri yüklendi. (aosp/3041632)
  • Yerel ve JVM masaüstü ortamlarında viewModelScope için varsayılan oluşturma davranışını iyileştirin. (aosp/3039221)

Harici Katkı (External Contribution)

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

Sürüm 2.8.0-beta01

17 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 iptal edilir. 2.8.0-beta01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • lifecycle-runtime-compose yapısı artık Kotlin Multiplatform ile uyumlu. Bu nedenle kodu common'ye taşınıyor ve androidx.compose için çok platformlu destekle eşleşen bir Android yapısı gönderiliyor. (If7a71, I4f4a0, b/331769623)

Sürüm 2.8.0-alpha04

3 Nisan 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 iptal edilir. 2.8.0-alpha04 sürümü bu commit'leri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose yapısı artık Kotlin Multiplatform ile uyumlu. Bu nedenle kodu common'ye taşınıyor ve androidx.compose'nin çok platformlu desteğine uygun bir Android yapısı gönderiliyor. Bu değişikliği karşılamak için Composable viewModel yöntemi artık java.lang.Class'ye ek olarak KClass de kabul ediyor. (b/330323282)

Hata Düzeltmeleri

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

Bağımlılık güncellemesi

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

Sürüm 2.8.0-alpha03

20 Mart 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 iptal edilir. 2.8.0-alpha03 sürümü bu commit'leri içerir.

Yeni Özellikler

  • ViewModel.viewModelScope artık geçersiz kılınabilir bir oluşturucu parametresi. Bu sayede, kendi göndericinizi ve SupervisorJob() öğenizi ekleyebilir veya runTest içinde bulunan 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 Multiplatform Uyumluluğu

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

Bu değişikliğe uyum sağlamak için ViewModelProvider üzerindekiler gibi java.lang.Class<T> alan yöntemlerin artık kotlin.reflect.KClass<T> alan eşdeğer bir yöntemi var.

Android'de ikili uyumluluk korunmuştur ancak Android API yüzeyini ortak API yüzeyiyle karşılaştırırken dikkat edilmesi gereken birkaç önemli değişiklik vardır:

  • ViewModelProvider örneği oluşturma işlemi artık oluşturucusunu doğrudan çağırmak yerine ViewModelProvider.create() yöntemleri aracılığıyla yapılır.
  • ViewModelProvider.NewInstanceFactory ve ViewModelProvider.AndroidViewModelFactory yalnızca Android'de kullanılabilir.
    • Özel Fabrikaların ViewModelProvider.Factory'dan genişletilmesi ve CreationExtras alan create yönteminin ya da viewModelFactory Kotlin DSL'sinin kullanılması önerilir.
  • JVM dışı platformlarda ViewModelProvider öğesini özel bir fabrika olmadan kullanmak UnsupportedOperationException ile sonuçlanır. JVM platformlarında, özel bir fabrika sağlanmadığı takdirde no-args ViewModel oluşturucusu kullanılarak uyumluluk korunur.
  • viewModelScope, Dispatchers.Main'nin kullanılamadığı platformlarda (ör.EmptyCoroutineContext Linux).

Davranış Değişiklikleri

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

Hata Düzeltmeleri

  • ViewModel.getCloseable artık yinelenen anahtarları işliyor: key ile ilişkili bir AutoCloseable kaynağı varsa eski kaynak hemen değiştirilip kapatılıyor. (Ibeb67)
  • ViewModel öğesinin viewModelScope özelliğine erişim artık iş parçacığı açısından güvenli. (If4766, b/322407038)

Harici Katkı (External Contribution)

  • LocalLifecycleOwner, Compose tabanlı yardımcı API'lerinin Compose UI dışında kullanılabilmesi için Compose UI'dan lifecycle-runtime-compose'a taşındı. Katkısı için Jake Wharton'a teşekkür ederiz. (I6c41b, b/328263448)

Sürüm 2.8.0-alpha02

21 Şubat 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 iptal edilir. 2.8.0-alpha02 sürümünde şu commit'ler yer alıyor.

Yeni Özellikler

  • dropUnlessResumed ve dropUnlessStarted API'leri eklendi. Bu API'ler, LifecycleOwner değeri verilen Lifecycle.State değerinin altına düşse bile tıklama veya diğer etkinlikleri bırakmanıza olanak tanır. Örneğin, başka bir ekrana geçiş başladıktan sonra tıklama etkinliklerinin işlenmesini önlemek için Navigation Compose ile kullanılabilir: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Kotlin Dönüşümleri

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

Kotlin Multiplatform Uyumluluğu

  • Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ve LifecycleRegistry içindeki temel Yaşam Döngüsü API'leri artık Kotlin Multiplatform ile uyumlu yapılar halinde gönderiliyor. (b/317249252)

API Değişiklikleri

  • LifecycleStartEffect ve LifecycleResumeEffect API'lerini anahtarsız çağırmak artık bir hatadır. Bu API'lerin yansıttığı DisposableEffect API ile aynı kural geçerlidir. (Ib0e0c, b/323518079)
  • ViewModel artık Closeable yerine AutoCloseable kullanıyor. Bu, geriye dönük uyumlu bir değişikliktir. (I27f8e, b/214568825)
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) yerine LiveData.toPublisher(lifecycleOwner) kullanımdan kaldırıldı. (Iabe29, b/262623005)

Harici Katkı (External Contribution)

  • Lifecycle'ı Kotlin Multiplatform'a taşımamıza yardımcı olan Jetbrains'ten Ivan Matkov'a teşekkür ederiz. (aosp/2926690, I0c5ac, If445d)

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 iptal edilir. 2.8.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • ViewModel artık Closeable nesnelerinin key ile eklenmesini destekliyor. Bu sayede nesneler getCloseable() üzerinden alınabiliyor. (I3cf63)

Sürüm 2.7

Sürüm 2.7.0

10 Ocak 2024

androidx.lifecycle:lifecycle-*:2.7.0 iptal edilir. 2.7.0 sürümü şu commit'leri içerir.

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

  • TestLifecycleOwner artık, durum değişikliğinin ve tüm LifecycleObserver geri çağırmalarının döndürülmeden önce tamamlanmasını sağlayan bir askıya alma işlevi setCurrentState() içeriyor. Özellikle, currentState özelliğini doğrudan ayarlamaktan farklı olarak bu işlemde runBlocking kullanılmaz. Bu nedenle, runTest tarafından sağlananlar gibi bir coroutine içinde güvenle kullanılabilir.
  • map ve switchMap uzantıları LiveData artık distinctUntilChanged davranışını yansıtıyor. LiveData'da value ayarlanmışsa map/switchMap işlevi, döndürülen LiveData'nın value değerini doldurmak için hemen çağrılır. Bu, ilk değerin ilk bileşimde (observeAsState() ile kullanıldığında) ayarlanmasını sağlar ancak gözlem davranışını değiştirmez. Kaynaktaki LiveData değerleri, LiveData gözlemlenmeye başlandıktan sonra uygulanır.
  • Bu sürümde, işlem sonlandırılıp yeniden oluşturulduktan sonra SavedStateHandle'nın ö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 Parcelable dizileri ek çalışma gerektirir (doğru türde türü belirlenmiş bir dizi manuel olarak oluşturulur) ve get, getLiveData ve getStateFlow ile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir.
  • LifecycleObserver ile ilişkili proguard keep kuralları kaldırıldı. Bu, yansıtma yoluyla API'leri kullanmak isteyen (ör. uzun süredir kullanımdan kaldırılmış @OnLifecycleEvent ek açıklamasını kullanmak) ProGuard ile korunmuş kodun, kendi kullanım alanı için kendi koruma kurallarını sağlaması gerektiği anlamına gelir.

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

  • LifecycleEventObserver kullanmak yerine artık Lifecycle.asFlow() uzantı yöntemiyle Lifecycle.Event Flow izleyebilirsiniz.
  • Jetpack Compose kullanıcıları artık LifecycleEventEffect kullanarak Lifecycle.Event tabanlı Compose yan etkilerini çalıştırabilir.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Jetpack Compose kullanıcıları, sırasıyla başlatılan ve durdurulan, devam ettirilen ve duraklatılan etkinlik çiftlerini işlemek için LifecycleStartEffect ve LifecycleResumeEffect işlevlerini kullanabilir. Bu API, DisposableEffect içinde bulunan API'nin bir kopyasıdır ve durum yükselirken yapılan değişikliğin geri düşerken tersine çevrilmesi gereken durumlar için uygundur.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

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

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

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

Daha fazla bilgi için Yaşam döngüsü durumunu akışlarla toplama başlıklı makaleyi inceleyin.

Sürüm 2.7.0-rc02

13 Aralık 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 iptal edilir. 2.7.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • SavedStateHandle işlemin sonlandırılıp yeniden oluşturulmasından sonra özel Parcelable sınıflarının düzgün şekilde geri yüklenmemesine neden olan sorun düzeltildi. Android çerçevesi tarafından kaybedilen tür bilgileri nedeniyle, özel Parcelable dizileri ek çalışma gerektirir (doğru türde türü belirlenmiş bir dizi manuel olarak oluşturulur) ve get, getLiveData ve getStateFlow ile ilgili dokümanlarda artık bu sınırlama özellikle belirtilmektedir. (I0b55a)

Sürüm 2.7.0-rc01

15 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc01 iptal edilir. 2.7.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 2.7.0-beta01

1 Kasım 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01, herhangi bir değişiklik yapılmadan yayınlanır. 2.7.0-beta01 sürümü şu commit'leri içerir.

  • Beta sürümünde güncelleme yapıldı. Bu sürümde önemli bir değişiklik yapılmadı.

Sürüm 2.7.0-alpha03

18 Ekim 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 iptal edilir. 2.7.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • lifecycle-runtime-testing artık eşzamanlı rutin içinde currentState alanı kullanılırken TestLifecycleOwner öğesinin Lifecycle.State ayarlanmasını önlemek için yeni bir Lint kontrolü içeriyor. Lint kontrolü artık setCurrentState öğesinin askıya alınmasını öneriyor. Bu sayede Lifecycle.State öğesi engellenmeden ayarlanabiliyor. (Icf728, b/297880630)

Hata Düzeltmeleri

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

Sürüm 2.7.0-alpha02

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 iptal edilir. 2.7.0-alpha02 sürümünde şu commit'ler yer alıyor.

Yeni Özellikler

  • TestLifecycleOwner artık, kullanıcıların runTest tarafından sağlananlar gibi bir eşzamanlılık rutini içinden TestLifecycleOwner kullanma seçeneği sunmak için askıya alma işlevini setCurrentState() 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ı, önceki LiveData için bir değer ayarlanmışsa döndürülen LiveData öğesinin value değerini ayarlar. Böylece, Jetpack Compose'da sonuçtaki LiveData'nın kullanılması, ilk bileşimde doğru duruma sahip olur. (I91d2b, b/269479952)
  • ViewModel, onCleared() için bir arama aldıysa addCloseable() artık Closeable'ı hemen kapatıyor.ViewModel (I4712e, b/280294730)

Hata Düzeltmeleri

  • Yaşam döngüsü 2.6.2: Durum geri yüklendiyse, save() üst öğede durumu gerçekten kaydetmeden çağrıldıysa ve ardından durum tekrar geri yüklendiyse SavedStateHandle'nin işlem sonlandırıldıktan sonra doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi.SavedStateRegistry Bu, rememberSaveable ile Navigation Compose'un 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 iptal edilir. 2.7.0-alpha01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Lifecycle.State artık Lifecycle.currentStateFlow aracılığıyla Compose'da gözlemlenebilir. Lifecycle.currentStateFlow, value değerinin mevcut Lifecycle.State olduğu bir StateFlow döndürür. (Ib212d, b/209684871)
  • Lifecycle.Events artık Lifecycle.asFlow(). ile Flow olarak gözlemlenebiliyor (If2c0f, b/176311030)
  • LifecycleResumeEffect API, hem Lifecycle.Event.ON_RESUME hem de Lifecycle.Event.ON_PAUSE etkinlik geri çağırmalarına dayalı SideEffects çalıştırmak için eklendi. (I60386, b/235529345)
  • LifecycleStartEffect, Lifecycle.Event.ON_START ve Lifecycle.Event.ON_STOP etkinlik geri çağırmalarına dayalı SideEffect'leri çalıştırmak için API eklendi. (I5a8d1, b/235529345)
  • LifecycleEventEffect API, Lifecycle.Event temel alınarak SideEffect Compose'ların çalıştırılması için eklendi. (Ic9794, b/235529345)
  • Lifecycle.collectAsState() uzantısı, Lifecycle.State öğesini doğrudan Compose State olarak kullanıma sunmak için eklendi. Bu, lifecycle.currentStateFlow.collectAsState() ile eşdeğerdir (ve daha kısa bir alternatiftir). (I11015, b/235529345)

Hata Düzeltmeleri

  • LiveData.distinctUntilChanged() uzantısı, önceki LiveData'ye değer ayarlanmışsa döndürülen LiveData'nin value değerini ayarlar. Bu durum, gözlem davranışını değiştirmez. Kaynaktan LiveData gelen güncellenmiş değerler, yalnızca distinctUntilChanged() kaynağından döndürülen LiveData değerini gözlemlemeye başladığınızda uygulanır. (Ib482f)
  • LifecycleObserver ile ilişkili proguard keep kuralları kaldırıldı. Bu nedenle, yansıtma yoluyla API'leri kullanmak isteyen ProGuard'lı kodun, kendi kullanım alanına özel keep kurallarını sağlaması gerekir. (Ia12fd)

Sürüm 2.6

Sürüm 2.6.2

6 Eylül 2023

androidx.lifecycle:lifecycle-*:2.6.2 iptal edilir. 2.6.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Durum geri yüklendiyse, SavedStateRegistry üst öğesinde durum kaydedilmeden save() çağrıldıysa ve ardından durum tekrar geri yüklendiyse SavedStateHandle öğesinin işlem sonlandırıldıktan sonra doğru şekilde geri yüklenmemesine neden olan sorun düzeltildi. Bu, rememberSaveable ile Navigation Compose'un NavHost arasındaki etkileşimi düzeltir. (aosp/2729289)

Sürüm 2.6.1

22 Mart 2023

androidx.lifecycle:lifecycle-*:2.6.1 iptal edilir. 2.6.1 sürümü şu commit'leri içerir.

Bağımlılık Güncellemeleri

Sürüm 2.6.0

8 Mart 2023

androidx.lifecycle:lifecycle-*:2.6.0 iptal edilir. 2.6.0 sürümü şu commit'leri içerir.

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

  • LiveData artık LiveData üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni bir isInitialized özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı için null döndüren liveData.value ile açık bir null değeri arasında ayrım yapmanıza olanak tanır.
  • MediatorLiveData artık ilk değeri ayarlamak için bir oluşturucu içeriyor.
  • collectAsStateWithLifecycle()'in StateFlow ve Flow üzerinde, akışlardan veri toplayan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Compose State olarak temsil eden yeni bir uzantı eklendi.
  • Duraklatma dağıtıcısı kullanmak bazı durumlarda kaynak israfına yol açabileceğinden Lifecycle.launchWhenX ve Lifecycle.whenX yöntemlerinin desteği sonlandırıldı. Lifecycle.repeatOnLifecycle kullanılması önerilir. Çalışmanın tek seferlik olarak askıya alınması hakkında daha fazla bilgi için lütfen bunun neden doğası gereği güvenli olmadığını açıklayan bu belgeye bakın.
  • Kotlin'e Dönüştürme: Çok sayıda Lifecycle sınıfı Kotlin'e dönüştürüldü. Dönüştürülen tüm sınıflar, önceki sürümlerle ikili uyumluluklarını korur. Kotlin ile yazılan sınıflar için aşağıdaki sınıflarda kaynakla uyumlu olmayan değişiklikler yapıldı: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

Aşağıdaki tabloda, yaşam döngüsünün yeni sürümündeki kaynak dönüşümleri verilmiştir.

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

Sürüm 2.6.0-rc01

22 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • LiveData.distinctUntilChanged() uzantısı, önceki LiveData'ye değer ayarlanmışsa döndürülen LiveData'nin value değerini ayarlar. Bu durum, gözlem davranışını değiştirmez. Kaynaktan LiveData gelen güncellenmiş değerler, yalnızca distinctUntilChanged() kaynağından döndürülen LiveData değerini gözlemlemeye başladığınızda uygulanır. (Ib482f)

Sürüm 2.6.0-beta01

8 Şubat 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.

Kotlin Dönüşümleri

  • LifecycleOwner artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık ö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. Bu sınıflar artık önceki getViewModelStore() işlevini uygulamak yerine viewModelStore özelliğini geçersiz kılmalıdır. (I86409, b/240298691)
  • LifecycleOwner üzerindeki lifecycleScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx'den lifecycle-common yapay eserine taşındı. (I41d78, b/240298691)
  • Lifecycle üzerindeki coroutineScope alanını sağlayan Kotlin uzantısı, lifecycle-runtime-ktx'den lifecycle-common yapay eserine taşındı. (Iabb91, b/240298691)

Sürüm 2.6.0-alpha05

25 Ocak 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha05 iptal edilir. 2.6.0-alpha05 sürümü şu commit'leri içerir.

Kotlin Dönüşümleri

  • Transformations artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış ve doğrudan Transformations.map gibi bir söz dizimi kullanan sınıflar için kaynakla uyumlu olmayan bir değişikliktir. 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 androidx.arch.core.util.Function yöntemi alan bu yöntemlerin sürümleri kullanımdan kaldırılır ve Kotlin Function1 alan sürümlerle değiştirilir. Bu değişiklik, ikili uyumluluğu korur. (I8e14f)
  • ViewTreeViewModelStoreOwner artık Kotlin ile yazılıyor. Bu, Kotlin ile yazılmış sınıflar için kaynakla uyumsuz bir değişikliktir. Daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için artık View, androidx.lifecycle.setViewTreeViewModelStoreOwner ve androidx.lifecycle.findViewTreeViewModelStoreOwner üzerinde Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu, ikili uyumludur ve Java programlama dilinde yazılan uygulamalar için kaynak uyumluluğunu korur. (Ia06d8, Ib22d8, b/240298691)
  • HasDefaultViewModelProviderFactory arayüzü artık Kotlin ile yazılıyor. Bu, Kotlin'de yazılmış sınıflar için kaynakla uyumlu olmayan bir değişikliktir. Bu sınıflar artık önceki ilgili işlevleri uygulamak yerine defaultViewModelProviderFactory ve defaultViewModelCreationExtras özelliklerini geçersiz kılmalıdır. (Iaed9c, b/240298691)
  • Observer artık Kotlin ile yazılıyor. onChanged() yöntemi artık parametresi için value adını kullanıyor. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher ve ProcessLifecycleOwner artık Kotlin'de yazılıyor (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

Sürüm 2.6.0-alpha04

11 Ocak 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 iptal edilir. 2.6.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • LiveData artık LiveData üzerinde açık bir değerin ayarlanıp ayarlanmadığını belirten yeni bir isInitialized özelliği içeriyor. Bu özellik, hiçbir değer ayarlanmadığı için null döndüren liveData.value ile açık bir null değeri arasında ayrım yapmanıza olanak tanır. (Ibd018)

API Değişiklikleri

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

Kotlin Dönüşümleri

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

Hata Düzeltmeleri

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

Sürüm 2.6.0-alpha03

24 Ekim 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 iptal edilir. 2.6.0-alpha03 sürümünde şu commit'ler yer alıyor.

Hata Düzeltmeleri

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

Sürüm 2.6.0-alpha02

7 Eylül 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 iptal edilir. 2.6.0-alpha02 sürümünde şu commit'ler yer alıyor.

API Değişiklikleri

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

Hata Düzeltmeleri

  • Lifecycle yapıları artık, birbirine bağımlı tüm yaşam döngüsü yapılarının aynı sürümü kullanmasını sağlayan kısıtlamalar içeriyor. Bu kısıtlamalar, bağımlılıklardan biri yükseltildiğinde diğerlerini otomatik olarak yükseltiyor. b/242871265
  • FlowLiveData.asFlow(), iş parçacığı güvenliğini ve bağlam korumasını sağlamak için kendi Channel uygulamasını kullanmak yerine artık callbackFlow oluşturuyor. (I4a8b2, b/200596935)
  • FlowLiveData'nın asLiveData işlevi, yeni LiveData nesnesi oluşturulurken artık StateFlow'nin başlangıç değerini koruyacak. (I3f530, b/157380488)
  • Yaşam Döngüsü 2.5.1: AndroidViewModelFactory'nin özel uygulamaları, durum bilgisi olan oluşturucu Lifecycle 2.4+ ile kullanılırken artık create(modelClass) işlevini doğru şekilde çağırıyor (I5b315, b/238011621).

Sürüm 2.6.0-alpha01

29 Haziran 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • StateFlow ve Flow üzerinde, akışlardan veri toplayan ve yaşam döngüsüne duyarlı bir şekilde en son değerini Compose State olarak temsil eden collectAsStateWithLifecycle ile ilgili yeni bir uzantı eklendi. Yaşam döngüsü en az belirli bir Lifecycle.State olduğunda akış toplanır ve yeni yayın, State'in 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 State'in değeri güncellenmez. (I1856e, b/230557927)

Sürüm 2.5

Sürüm 2.5.1

27 Temmuz 2022

androidx.lifecycle:lifecycle-*:2.5.1 iptal edilir. 2.5.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • AndroidViewModelFactory'nın özel uygulamaları, durum bilgisi olan AndroidViewModelFactory oluşturucuyu Lifecycle 2.4+ ile kullanırken 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 iptal edilir. 2.5.0 sürümü şu commit'leri içerir.

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

  • SavedStateHandle artık getStateFlow() API'si sunuyor. Bu API, LiveData kullanmaya alternatif olarak değer değişikliklerini izlemek için Kotlin StateFlow döndürüyor.

  • ViewModel CreationExtras: Özel bir ViewModelProvider.Factory yazarken sırasıyla Application veya SavedStateHandle'ye erişmek için artık AndroidViewModelFactory veya AbstractSavedStateViewModelFactory'yi genişletmek gerekmiyor. Bunun yerine, bu alanlar create: create(Class<T>, CreationExtras) yeni aşırı yüklemesi aracılığıyla CreationExtras olarak her ViewModelProvider.Factory alt sınıfına sağlanır. Bu ekstralar, sırasıyla Activity 1.5.0 ve Fragment 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 viewModelFactory Kotlin DSL'si sunuyor. Bu DSL, ViewModelProvider.Factory öğenizi birincil veri kaynağı olarak CreationExtras kullanarak, özel fabrikanızın desteklediği her bir ViewModel sınıfı için bir tane olmak üzere bir veya daha fazla lambda başlatıcı açısından tanımlamanıza olanak tanır.

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

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

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • addCloseable() API'si ve onCleared()'de herhangi bir manuel işlem yapılmasına gerek kalmadan ViewModel temizlendiğinde kapatılacak olan ViewModel'ye bir veya daha fazla Closeable nesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi.

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

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

    Bu değer, ViewModel ile aynı kullanım ömrüne sahip olacak şekilde viewModelScope 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 öğesini INITIALIZED konumundan DESTROYED konumuna taşımaya çalışırken artık Lifecycle öğesine gözlemci eklenip eklenmediğine bakılmaksızın her zaman IllegalStateException hatası verilecek.
  • LifecycleRegistry artık DESTROYED durumuna ulaştığında gözlemcilerini temizleyecek.

Sürüm 2.5.0-rc02

15 Haziran 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 iptal edilir. 2.5.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • ViewModelProvider, compileOnly Lifecycle bağımlılıklarının önceki sürümleri 2.5 ve sonraki sürümlerle karıştırıldığında artık kilitlenmeyecek. (I81a66, b/230454566)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • MediatorLiveData.addSource() artık null kaynağını gözlemcilere yaymak yerine null kaynağı geçirildiğinde NullPointerException oluşturuyor.(Ibd0fb, b/123085232)

Sürüm 2.5.0-beta01

20 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Durumu SavedStateHandle içinde kalıcı hale getirmek için özellik adlarını anahtar olarak kullanmak üzere SavedStateHandle.saveable özellik temsilcileri eklendi (I8bb86, b/225014345)

Hata Düzeltmeleri

  • Birincil olmayan bir alt gezinme sekmesinde bir NavHost öğesini başka bir NavHost öğesinin içine yerleştirmenin, birden fazla geri yığın kullanıldığında IllegalStateException öğesine yol açmasına neden olan sorun düzeltildi. (I11bd5, b/228865698)

Sürüm 2.5.0-alpha06

6 Nisan 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 iptal edilir. 2.5.0-alpha06 sürümü şu commit'leri içerir.

Yeni Özellikler

  • MutableState aşırı yüklemesini rememberSaveable ile eşitlik sağlamak için SavedStateHandle.saveable'e deneysel olarak ekleyin (I38cfe, b/224565154)

API Değişiklikleri

  • CreationExtras artık sealed yerine abstract. (Ib8a7a)

Hata Düzeltmeleri

  • IllegalStateException: Already attached to lifecycleOwner hatası düzeltildi. Bu hataya SavedStateHandleController neden oluyordu. (I7ea47, b/215406268)

Sürüm 2.5.0-alpha05

23 Mart 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 iptal edilir. 2.5.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • lifecycle-viewmodel-compose modülü artık SavedStateHandleSaver adlı deneysel bir API sunuyor. Bu API, SavedStateHandle içindeki değerlerin rememberSaveable ile aynı kaydedilmiş örnek durumuyla doğru şekilde entegre edilmesini sağlıyor. (Ia88b7, b/195689777)

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 2.5.0-alpha04

9 Mart 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 iptal edilir. 2.5.0-alpha04 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • addCloseable() API'si ve onCleared()'de herhangi bir manuel işlem yapılmasına gerek kalmadan ViewModel temizlendiğinde kapatılacak olan ViewModel'ye bir veya daha fazla Closeable nesnesi eklemenize olanak tanıyan yeni bir oluşturucu aşırı yüklemesi eklendi. (I55ea0)
  • lifecycle-viewmodel artık CreationExtras'ü birincil veri kaynağı olarak kullanarak belirli ViewModel sınıflarını işlemek için lambda eklemenize olanak tanıyan bir InitializerViewModelFactory sunuyor. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose artık özel bir ViewModelProvider.Factory oluşturulmasını gerektirmeden ViewModel örneği oluşturmak için lambda fabrikası alan bir viewModel() API sunuyor. (I97fbb, b/216688927)

API Değişiklikleri

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

Davranış değişiklikleri

  • Lifecycle.State öğesini INITIALIZED konumundan DESTROYED konumuna taşımaya çalışırken, Lifecycle öğesine gözlemci eklenip eklenmediğine bakılmaksızın her zaman IllegalStateException hatası verilir. (I7c390, b/177924329)
  • LifecycleRegistry artık DESTROYED durumuna ulaştığında gözlemcilerini temizleyecek. (I4f8dd, b/142925860)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 iptal edilir. 2.5.0-alpha02 sürümünde şu commit'ler yer alıyor.

API Değişiklikleri

  • SavedStateHandle ve SavedStateViewModelFactory, Kotlin'e dönüştürüldü. Bu, her iki sınıftaki genel türlerin null yapılabilirliğini iyileştirdi. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • LiveData switchMap işlev parametresi artık boş değer atanabilir bir çıkışa sahip olabilir. (I40396, b/132923666)
  • LiveData -ktx uzantıları artık @CheckResult ile açıklama eklenerek bu işlevler çağrıldığında sonucun kullanılmasını zorunlu kılıyor. (Ia0f05, b/207325134)

Davranış değişiklikleri

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

Hata Düzeltmeleri

  • Yaşam döngüsü 2.4.1 bölümünde: ProcessLifecycleInitializer öğesinin StartupException oluşturmasını engelleyen düzeltmelerin varsayılan olarak kullanılabilmesi için lifecycle-process öğesi Startup 1.1.1'e bağlı olacak şekilde güncellendi. (Ib01df, b/216490724)
  • Özel AndroidViewModel sınıfları yanlış sırada parametreler içerdiğinde ve ViewModel oluşturmaya çalıştığında artık daha iyi bir hata mesajı gösteriliyor. (I340f7, b/177667711)
  • Artık CreationExtras üzerinden AndroidViewModelFactory kullanarak uygulama ayarlamadan görünüm modeli oluşturabilirsiniz. (I6ebef, b/217271656)

Sürüm 2.5.0-alpha01

26 Ocak 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.

ViewModel CreationExtras

Bu sürümle birlikte, ViewModel oluşturma şeklini yeniden yapılandırmanın temelini atıyoruz. Her biri ek işlevsellik sağlayan (AndroidViewModelFactory aracılığıyla Application oluşturucu parametresine, SavedStateViewModelFactory ve AbstractSavedStateViewModelFactory aracılığıyla SavedStateHandle oluşturucu parametresine izin verme vb.) katı bir ViewModelProvider.Factory alt sınıfı kümesi yerine, yeni bir kavram olan CreationExtras'e dayanan durumsuz fabrikalar dünyasına geçiyoruz. (Ia7343, b/188691010, b/188541057)

Bu değişiklikle birlikte ViewModelProvider artık ViewModelProvider.Factory'nin önceki create(Class<T>) yöntemine doğrudan çağrı yapmayacak. Bunun yerine, create işlevinin yeni bir aşırı yüklenmesini çağırır: create(Class<T>, CreationExtras). Bu nedenle, ViewModelProvider.Factory örneğinin doğrudan uygulandığı her durumda aşağıdaki yeni CreationExtras özelliklerine erişilebilir:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: Bu String, ViewModelProvider.get()'ye ilettiğiniz özel anahtara erişim sağlar.
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY, Application sınıfına erişim sağlıyor.
  • 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şkenlerine erişim sağlar.

Bu ekstralar, Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01 ve Navigation 2.5.0-alpha01 kullanılırken varsayılan olarak sağlanır. Bu kitaplıkların daha eski bir sürümünü kullanıyorsanız CreationExtras boş olur. ViewModelProvider.Factory öğesinin mevcut tüm alt sınıfları, bu kitaplıkların önceki sürümlerinde kullanılan eski oluşturma yolunu ve gelecekte kullanılacak CreationExtras yolunu destekleyecek şekilde yeniden yazılmıştır.

Bu CreationExtras, Fabrika alt sınıflarının katı bir hiyerarşisine güvenmeden, ihtiyacınız olan bilgileri her ViewModel'ye ileten bir ViewModelProvider.Factory oluşturmanıza olanak tanır:

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

Yalnızca ihtiyaç duyan ViewModel için SavedStateHandleSupport kaynağından CreationExtras üzerinde createSavedStateHandle() Kotlin uzantı işlevini kullanarak SavedStateHandle oluştururuz. (Ia6654, b/188541057)

Özel CreationExtras, ComponentActivity veya Fragment içinde getDefaultViewModelCreationExtras() geçersiz kılınarak sağlanabilir. Böylece, özel ViewModelProvider.Factory içinde yerleşik bir destekli yerleştirme biçimi olarak kullanılabilir. Bu ekstralar, doğrudan ViewModelProvider ile kullanıldığında veya by viewModels() ve by activityViewModels() Kotlin özelliği uzantıları kullanıldığında özel Factory'nizde otomatik olarak kullanılabilir. (I79f2b, b/207012584, b/207012585, b/207012490)

Hata Düzeltmeleri

  • SavedStateHandle öğesine sağlanan varsayılan değerin, işlem sonlandırılıp yeniden oluşturulduktan sonra SavedStateHandle öğesinden özel olarak kaldırılmış olsa bile yeniden görünmesi sorunu düzeltildi. Bunun sonucunda SavedStateHandle, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)

Sürüm 2.4

Sürüm 2.4.1

9 Şubat 2022

androidx.lifecycle:lifecycle-*:2.4.1 iptal edilir. 2.4.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Lifecycle 2.5.0-alpha01'dan geri aktarıldı: SavedStateHandle'dan özel olarak kaldırılmış olsa bile, bir SavedStateHandle'a sağlanan varsayılan değerin işlem sonlandırılıp yeniden oluşturulduktan sonra tekrar görünmesine neden olan sorun düzeltildi. Bunun sonucunda SavedStateHandle, varsayılan değerleri ve geri yüklenen değerleri birleştirmeyecek, bunun yerine yalnızca geri yüklenen değerleri doğruluk kaynağı olarak kullanacaktır. (I53a4b)
  • lifecycle-process artık Androidx Startup 1.1.1'e bağlıdır. Bu sürümde, ProcessLifecycleInitializer kullanımının StartupException'e neden olduğu bir regresyon düzeltildi. (b/216490724)

Sürüm 2.4.0

27 Ekim 2021

androidx.lifecycle:lifecycle-*:2.4.0 iptal edilir. 2.4.0 sürümü şu commit'leri içerir.

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

  • @OnLifecycleEvent desteği sonlandırıldı. Bunun yerine LifecycleEventObserver veya DefaultLifecycleObserver kullanılmalıdır.
  • androidx.lifecycle:lifecycle-viewmodel-compose kitaplığı eklendi. viewModel() composable ve LocalViewModelStoreOwner sağlar.
    • Kaynakta yapılan, geriye dönük uyumluluğu bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık boş değer atanabilir genel değerlere izin vermiyor.
  • androidx.lifecycle:lifecycle-runtime-ktx'ya yeni eş yordam API'leri eklendi:
  • Lifecycle.repeatOnLifecycle, Lifecycle en az belirli bir durumdayken bir kod bloğunu eşzamanlı yordamda yürüten API. Yaşam döngüsü hedef durumun içine ve dışına çıktıkça engelleme iptal edilip yeniden başlatılır.
  • Flow.flowWithLifecycle, yaşam döngüsü belirli bir durumda olduğunda yukarı akış Flow'dan değerler yayan API.
  • DefaultLifecycleObserver, lifecycle.lifecycle-common-java8 konumundan lifecycle.lifecycle-common konumuna taşındı. lifecycle.lifecycle-common-java8, lifecycle.lifecycle-common üzerinde artık ek işlev sağlamadığından lifecycle.lifecycle-common-java8'ya olan bağımlılık lifecycle.lifecycle-common ile değiştirilebilir.
  • lifecycle-viewmodel-ktx'daki coroutine olmayan API'ler lifecycle-viewmodel modülüne taşındı.
  • lifecycle-process artık ProcessLifecycleOwner'ı başlatmak için androidx.startup kullanıyor.

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

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

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

    (veya)

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

Sürüm 2.4.0-rc01

29 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01, Lifecycle 2.4.0-beta01'de herhangi bir değişiklik yapılmadan yayınlandı. 2.4.0-rc01 sürümü şu commit'leri içerir.

Sürüm 2.4.0-beta01

15 Eylül 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 iptal edilir. 2.4.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • @OnLifecycleEvent desteği sonlandırıldı. Bunun yerine LifecycleEventObserver veya DefaultLifecycleObserver kullanılmalıdır. (I5a8fa)
  • DefaultLifecycleObserver, androidx.lifecycle.lifecycle-common-java8 konumundan androidx.lifecycle.lifecycle-common konumuna taşındı. androidx.lifecycle.lifecycle-common-java8, androidx.lifecycle.lifecycle-common üzerinde artık ek işlev sağlamadığından androidx.lifecycle.lifecycle-common-java8'ya olan bağımlılık androidx.lifecycle.lifecycle-common ile değiştirilebilir. (I021aa)
  • lifecycle-viewmodel-ktx içindeki coroutine olmayan API'ler lifecycle-viewmodel modülüne taşındı. (I6d5b2)

Harici Katkı (External Contribution)

  • ViewModel dokümanlarındaki bir yazım hatasını düzelttiği için dmitrilc'ye teşekkür ederiz. (#221)

Sürüm 2.4.0-alpha03

4 Ağustos 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 iptal edilir. 2.4.0-alpha03 sürümünde şu commit'ler yer alıyor.

API Değişiklikleri

  • Kaynakta yapılan, uyumluluğu bozan değişiklik: ViewModelProvider, Kotlin'de yeniden yazıldı. ViewModelProvider.Factory.create yöntemi artık boş değer atanabilir genel öğelere izin vermiyor. (I9b9f6)

Davranış Değişiklikleri

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

Harici Katkı (External Contribution)

  • repeatOnLifecycle belgelerindeki kod snippet'lerini düzelttiği için chao2zhang'a teşekkür ederiz. #205.

Sürüm 2.4.0-alpha02

16 Haziran 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 iptal edilir. 2.4.0-alpha02 sürümünde bu commit'ler yer alıyor.

Yeni Özellikler

  • RepeatOnLifecycleWrongUsage, onStart() veya onResume() içinde repeateOnLifecycle yanlış kullanıldığında bunu tespit eden yeni bir RepeatOnLifecycleWrongUsage lint kontrolü eklendi.lifecycle-runtime-ktx (706078, b/187887400)

API Değişiklikleri

  • Yapılandırılmış eşzamanlılığa saygı duyan ve hakkında akıl yürütmesi daha kolay olan Lifecycle.repeatOnLifecycle lehine LifecycleOwner.addRepeatingJob API'si kaldırıldı. (I4a3a8)
  • Diğer androidx.startup.Initializer'lerin bunları bağımlılık olarak kullanabilmesi için ProcessLifecycleInitializer'yı herkese açık hale getirin. (I94c31)

Hata Düzeltmeleri

  • Alan değiştiricilere sahip olduğunda NullSafeMutableLiveData lint kontrolüyle ilgili sorun düzeltildi. (#147, b/183696616)
  • Jenerik türler kullanılırken NullSafeMutableLiveData lint kontrolüyle ilgili başka bir sorun düzeltildi. (#161, b/184830263)

Harici Katkı (External Contribution)

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

Sürüm 2.4.0-alpha01

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.

Davranış Değişiklikleri

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

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

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

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

    (veya)

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Lifecycle 2.3.1 sürümünden itibaren: NonNullableMutableLiveData lint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)

Lifecycle Viewmodel Compose Version 1.0.0

Sürüm 1.0.0-alpha07

16 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.

API'de yapılan, geriye dönük uyumluluğu bozan değişiklikler

  • viewModel() artık isteğe bağlı ViewModelStoreOwner parametresini kabul ediyor. Bu sayede, LocalViewModelStoreOwner dışındaki sahiplerle çalışmak daha kolay hale geliyor. Örneğin, artık belirli bir gezinme grafiğiyle ilişkili bir ViewModel'i almak için viewModel(navBackStackEntry) kullanabilirsiniz. (I2628d, b/188693123)

Sürüm 1.0.0-alpha06

2 Haziran 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri içerir.

Compose'un 1.0.0-beta08 sürümüyle uyumlu olacak şekilde güncellendi.

Sürüm 1.0.0-alpha05

18 Mayıs 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Compose'un 1.0.0-beta07 sürümüyle uyumlu olacak şekilde güncellendi.

Hata Düzeltmeleri

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

Sürüm 1.0.0-alpha04

7 Nisan 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.

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

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

Sürüm 1.0.0-alpha03

10 Mart 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current artık ViewModelStoreOwner değerinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürüyor.ViewModelStoreOwner ViewModelStoreOwner gerektiren API'ler (ör. viewModel() ve NavHost) ViewModelStoreOwner ayarlanmamışsa yine de istisna oluşturur. (Idf39a)

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

24 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.

API Değişiklikleri

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

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

10 Şubat 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Sürüm 2.3.1

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

24 Mart 2021

androidx.lifecycle:lifecycle-*:2.3.1 iptal edilir. 2.3.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData Lint kuralı artık farklı boş değerlere sahip alan değişkenleri arasında doğru şekilde ayrım yapabilir. (b/169249668)

Sürüm 2.3.0

Sürüm 2.3.0

10 Şubat 2021

androidx.lifecycle:lifecycle-*:2.3.0 iptal edilir. 2.3.0 sürümü şu commit'leri içerir.

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

  • SavedStateHandle Parcelable olmayan sınıflar için destek: SavedStateHandle artık belirli bir anahtar için setSavedStateProvider()'ı çağırmanıza izin vererek tembel serileştirmeyi destekliyor. Bu sayede, SavedStateHandle'ın durumunu kaydetmesi istendiğinde saveState()'a geri çağırma işlemi yapacak bir SavedStateProvider sağlıyor. Paketlenebilir olmayan sınıfları kaydetme başlıklı makaleyi inceleyin.
  • Yaşam Döngüsü Davranış Yaptırımı:
    • LifecycleRegistry artık DESTROYED durumunu son durum olarak zorunlu kılıyor.
    • LifecycleRegistry artık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize ait olan LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, LifecycleRegistry nesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir.
  • Yaşam Döngüsü Durumu ve Etkinlik Yardımcıları: Lifecycle.Event'ye downFrom(State), downTo(State), upFrom(State), upTo(State) statik yardımcı yöntemleri eklendi. Bu yöntemler, State ve geçiş yönü verildiğinde Event oluşturmak için kullanılır. Lifecycle'ın Event'dan hemen sonra geçiş yapacağı State'ı sağlayan getTargetState() yöntemi eklendi.
  • withStateAtLeast: Bir yaşam döngüsü durumu bekleyen ve durum değişikliği noktasında eşzamanlı olarak askıya alınmayan bir kod bloğunu çalıştıran, ardından sonuçla devam eden Lifecycle.withStateAtLeast API'leri eklendi. Bu API'ler, askıya alma kodunun çalıştırılmasına izin vermemeleri ve özel bir dağıtıcı kullanmamaları nedeniyle mevcut when* yöntemlerinden farklıdır. (aosp/1326081)
  • ViewTree API'ler: Yeni bir ViewTreeLifecycleOwner.get(View) ve ViewTreeViewModelStoreOwner.get(View) API'si, bir View örneği verildiğinde sırasıyla LifecycleOwner ve ViewModelStoreOwner içerenleri almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity 1.2.0, Fragment 1.3.0 ve AppCompat 1.3.0-alpha01 veya sonraki sürümlere yükseltmeniz gerekir. findViewTreeLifecycleOwner ve findViewTreeViewModelStoreOwner Kotlin uzantıları sırasıyla lifecycle-runtime-ktx ve lifecycle-viewmodel-ktx'de kullanılabilir.
  • LiveData.observe() Kotlin uzantısı desteği sonlandırıldı: Lambda söz dizimini kullanmak için gerekli olan LiveData.observe() Kotlin uzantısı, Kotlin 1.4 kullanılırken gerekli olmadığı için artık desteklenmiyor.

Sürüm 2.3.0-rc01

16 Aralık 2020

androidx.lifecycle:lifecycle-*:2.3.0-rc01 iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

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

Harici Katkı (External Contribution)

Sürüm 2.3.0-beta01

1 Ekim 2020

androidx.lifecycle:lifecycle-*:2.3.0-beta01 iptal edilir. 2.3.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

Belgelerdeki Değişiklikler

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

Sürüm 2.3.0-alpha07

19 Ağustos 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 iptal edilir. 2.3.0-alpha07 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

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

Sürüm 2.3.0-alpha06

22 Temmuz 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 iptal edilir. 2.3.0-alpha06 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Davranış Değişiklikleri

  • LifecycleRegistry artık DESTROYED durumunu son durum olarak zorunlu kılıyor. (I00887)
  • LifecycleRegistry artık yöntemlerinin ana iş parçacığında çağrıldığını doğruluyor. Etkinliklerin, parçaların vb. yaşam döngüleri için her zaman gerekliydi. Ana olmayan iş parçacıklarından gözlemcilerin eklenmesi, çalışma zamanında yakalanması zor kilitlenmelere neden oluyordu. Kendi bileşenlerinize ait LifecycleRegistry nesneleri için LifecycleRegistry.createUnsafe(...) kullanarak kontrolleri açıkça devre dışı bırakabilirsiniz. Ancak bu durumda, bu LifecycleRegistry nesnesine farklı iş parçacıklarından erişildiğinde uygun bir senkronizasyonun yapıldığından emin olmanız gerekir (Ie7280, b/137392809).

Hata Düzeltmeleri

  • NullSafeMutableLiveData uygulamasındaki kilitlenme sorunu düzeltildi. (b/159987480)
  • ObsoleteLintCustomCheck ile birlikte gelen hata analizi kontrolleri (özellikle NullSafeMutableLiveData) için lifecycle-livedata-core-ktx düzeltildi. (b/158699265)

Sürüm 2.3.0-alpha05

24 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 iptal edilir. 2.3.0-alpha05 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • LiveData artık yeniden giriş yapılan durumları daha iyi işleyerek onActive() veya onInactive() için yinelenen çağrıları önlüyor. (b/157840298)
  • Android Studio 4.1 Canary 6 veya sonraki sürümleri kullanılırken Lint kontrollerinin çalışmamasına neden olan sorun düzeltildi. (aosp/1331903)

Sürüm 2.3.0-alpha04

10 Haziran 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NonNullableMutableLiveData Hata analizi kontrolündeki kilitlenme sorunu düzeltildi. (b/157294666)
  • NonNullableMutableLiveData Lint kontrolü artık, boş olmayan tür parametresine sahip bir MutableLiveData üzerinde null değeri ayarlanmış olan çok daha fazla durumu kapsıyor. (b/156002218)

Sürüm 2.3.0-alpha03

20 Mayıs 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 yayınlanır. 2.3.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • SavedStateHandle artık belirli bir anahtar için setSavedStateProvider() işlevini çağırmanıza olanak tanıyarak tembel serileştirmeyi destekliyor. Bu işlev, SavedStateHandle durumunu kaydetmesi istendiğinde saveState() işlevine geri çağırma işlemi yapacak bir SavedStateProvider sağlıyor. (b/155106862)
  • Yeni ViewTreeViewModelStoreOwner.get(View) API'si, View örneği verildiğinde kapsayan ViewModelStoreOwner öğesini almanıza olanak tanır. Bunu doğru şekilde doldurmak için Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 ve AppCompat 1.3.0-alpha01'e yükseltme yapmanız gerekir. lifecycle-viewmodel-ktx'ye findViewModelStoreOwner() Kotlin uzantısı eklendi. (aosp/1295522)

Hata Düzeltmeleri

  • MutableLiveData Lifecycle 2.3.0-alpha01'da yayınlanan Lint kontrollerinin lifecycle-livedata-core-ktx yapısıyla birlikte yayınlanamamasına neden olan sorun düzeltildi. (b/155323109)

Sürüm 2.3.0-alpha02

29 Nisan 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • SavedStateViewModelFactory artık kolayca kullanılamayan ve AndroidViewModel desteğine ihtiyaç duyulmayan durumları daha iyi desteklemek için oluşturucusuna boş Application iletmenize olanak tanıyor. (aosp/1285740)

Hata Düzeltmeleri

  • API düzeyi 28 ve daha düşük olan cihazlarda sınıf doğrulama hatasını önleyerek baştan başlatma performansını iyileştirir. (aosp/1282118)

Sürüm 2.3.0-alpha01

4 Mart 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Yeni ViewTreeLifecycleOwner.get(View) API'si, View örneği verildiğinde kapsayan LifecycleOwner öğesini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Activity 1.2.0-alpha01 ve Fragment 1.3.0-alpha01'a yükseltmeniz gerekir. findViewTreeLifecycleOwner Kotlin uzantısı lifecycle-runtime-ktx'da kullanılabilir. (aosp/1182361, aosp/1182956)
  • Kotlin'de null olmayan olarak tanımlanmış bir MutableLiveData üzerinde null değeri ayarlarken sizi uyaran yeni bir Lint kontrolü eklendi. Bu özellik, livedata-core-ktx veya livedata-ktx yapıtları kullanılırken kullanılabilir. (aosp/1154723, aosp/1159092)
  • lifecycle-runtime-testing uygulayan ve iş parçacığı açısından güvenli değiştirilebilir Lifecycle sağlayan bir TestLifecycleOwner sunan yeni bir LifecycleOwner yapısı kullanıma sunuldu. (aosp/1242438)

Hata düzeltmeleri

  • lifecycle-runtime yapısı artık benzersiz bir paket adına sahip. (aosp/1187196)

Sürüm 2.2.0

ViewModel-Savedstate 2.2.0 sürümü

5 Şubat 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.

Lifecycle ViewModel SavedState artık diğer Lifecycle yapay ürünleriyle aynı sürümü paylaşıyor. 2.2.0'nın davranışı, 1.0.0'nın davranışıyla aynıdır.

Sürüm 2.2.0

22 Ocak 2020

androidx.lifecycle:lifecycle-*:2.2.0 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.

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

  • Yaşam Döngüsü Eşrutin Entegrasyonu: Yeni lifecycle-runtime-ktx yapısı, Yaşam Döngüsü ile Kotlin eşrutinleri arasında entegrasyon sağlar. lifecycle-livedata-ktx, eş yordamlardan yararlanmak için de genişletildi. Daha fazla bilgi için Kotlin eşyordamlarını mimari bileşenlerle kullanma başlıklı makaleye bakın.
  • ViewModelProviders.of() desteği sonlandırıldı: ViewModelProviders.of() desteği sonlandırıldı. Fragment 1.2.0 kullanırken aynı işlevi elde etmek için yeni ViewModelProvider(ViewModelStoreOwner) oluşturucusuna Fragment veya FragmentActivity iletebilirsiniz.
  • lifecycle-extensions Yapay Nesne Kullanımdan Kaldırma: Yukarıda belirtilen ViewModelProviders.of()'nin kullanımdan kaldırılmasıyla birlikte bu sürüm, lifecycle-extensions'deki son API'nin kullanımdan kaldırıldığını gösterir. Bu yapay nesne artık tamamen kullanımdan kaldırılmış olarak kabul edilmelidir. lifecycle-extensions'in gelecekte 2.3.0 sürümü olmayacağından, lifecycle-extensions yerine ihtiyacınız olan belirli Yaşam Döngüsü yapılarına (ör. LifecycleService kullanıyorsanız lifecycle-service, ProcessLifecycleOwner kullanıyorsanız lifecycle-process) bağlı kalmanızı önemle tavsiye ederiz.
  • Gradle Artımlı Ek Açıklama İşlemcisi: Lifecycle'ın ek açıklama işlemcisi varsayılan olarak artımlıdır. Uygulamanız Java 8 programlama dilinde yazılmışsa DefautLifecycleObserver, Java 7 programlama dilinde yazılmışsa LifecycleEventObserver kullanabilirsiniz.

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 iptal edilir. 2.2.0-rc03 sürümü şu commit'leri içerir.

Hata düzeltmeleri

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

Harici katkılar

  • Düzeltmeye katkıda bulunan Anders Järleberg'e teşekkür ederiz. (aosp/1156203)
  • Satır içi yürütme uygulamasını incelediği için Jetbrains'ten Vsevolod Tolstopyatov'a teşekkür ederiz.

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

  • Lifecycle Extensions artık Fragment 1.2.0-rc03'a bağlıdır.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 iptal edilir. 2.2.0-rc02 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Kitaplığın ProGuard kurulumunda, hedef API 29'dan düşükse API 28 ve sonraki sürümlerin yüklü olduğu cihazları etkileyen bir hata düzeltildi. (b/142778206)

Sürüm 2.2.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 iptal edilir. 2.2.0-rc01 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • launchWhenCreated ve ilgili yöntemlerin, Dispatchers.Main.immediate yerine Dispatchers.Main kullanması nedeniyle ilişkili yaşam döngüsü yönteminden bir kare sonra çalışmasına neden olan sorun düzeltildi. (aosp/1145596)

Harici katkılar

  • Düzeltmeye katkıda bulunan Nicklas Ansman'a teşekkür ederiz. (aosp/1145596)

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 iptal edilir. 2.2.0-beta01 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Lifecycle 2.2.0-alpha05'te ProcessLifecycleOwner sıralamasında ve etkinliğin Android 10 cihazlarda başlatılmış ve devam ettirilmiş olarak taşınmasında ortaya çıkan regresyon düzeltildi.LifecycleOwner (aosp/1128132)
  • lifecycle-process'nın 2.0.0 veya 2.1.0 sürümü kullanılırken NullPointerException'ye neden olan ve Lifecycle 2.2.0-alpha05'da ortaya çıkan gerileme düzeltildi. (b/141536990)

Sürüm 2.2.0-alpha05

18 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 iptal edilir. 2.2.0-alpha05 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Coroutine livedata builder'daki yarış durumu düzeltildi. b/140249349

Sürüm 2.2.0-alpha04

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

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

Harici katkılar

  • Dispatchers.Main.immediate'a geçişi sağlayan Nicklas Ansman'a teşekkür ederiz. (aosp/1106073)

Sürüm 2.2.0-alpha03

7 Ağustos 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

API değişiklikleri

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

Sürüm 2.2.0-alpha02

2 Temmuz 2019

androidx.lifecycle:*:2.2.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

  • LiveDataScope.initialValue yerine, liveData bloğunun mevcut yayınlanan değerini izleyecek olan LiveDataScope.latestValue kullanıldı.
  • liveData oluşturucusuna, timeout parametresini Duration türünde alan yeni bir aşırı yükleme eklendi.

Sürüm 2.2.0-alpha01

7 Mayıs 2019

androidx.lifecycle:*:2.2.0-alpha01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • Bu sürümde, Lifecycle ve LiveData için Kotlin eşyordamlarını destekleyen yeni özellikler eklenmiştir. Bunlarla ilgili ayrıntılı belgelere buradan ulaşabilirsiniz.

ViewModel-SavedState 1.0.0 sürümü

Sürüm 1.0.0

22 Ocak 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 iptal edilir. Version 1.0.0 contains these commits.

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

  • Yeni SavedStateHandle sınıfı eklendi. Bu sayede ViewModel sınıflarınız, kaydedilmiş duruma erişebilir ve bu duruma katkıda bulunabilir. Bu nesne, ViewModel sınıfının oluşturucusunda alınabilir ve Fragments ile AppCompatActivity tarafından varsayılan olarak sağlanan fabrikalar, SavedStateHandle öğesini otomatik olarak yerleştirir.
  • AbstractSavedStateViewModelFactory eklendi. Bu sayede ViewModel için özel fabrikalar oluşturabilir ve bunlara SavedStateHandle erişimi sağlayabilirsiniz.

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

4 Aralık 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 iptal edilir. 1.0.0-rc03 sürümü şu commit'leri içerir.

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

  • Lifecycle ViewModel SavedState artık Lifecycle'a 2.2.0-rc03 bağlıdır.

Viewmodel-Savedstate Version 1.0.0-rc02

7 Kasım 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.

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

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

ViewModel-SavedState Version 1.0.0-rc01

23 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01, 1.0.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlanır. Sürüm 1.0.0-rc01 şu commit'leri içerir.

ViewModel-Savedstate Version 1.0.0-beta01

9 Ekim 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Activity.onActivityResult() içinde SavedState ViewModel'e ilk kez erişmenin IllegalStateException ile sonuçlanmasına neden olan sorun düzeltildi. (b/139093676)
  • AbstractSavedStateViewModelFactory kullanılırken yaşanan IllegalStateException sorunu düzeltildi. (b/141225984)

ViewModel-SavedState 1.0.0-alpha05 sürümü

18 Eylül 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.

API değişiklikleri

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

ViewModel-SavedState 1.0.0-alpha03 sürümü

7 Ağustos 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Zarar Veren Değişiklikler

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

2 Temmuz 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

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

API Değişiklikleri

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

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

13 Mart 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 iptal edilir. Bu ilk sürümün tam commit günlüğünü burada bulabilirsiniz.

Yeni özellikler

  • Artık ViewModels, savedstate'e katkıda bulunabilir. Bunu yapmak için yeni kullanıma sunulan ViewModel'in factory SavedStateVMFactory özelliğini kullanırsınız ve ViewModel'iniz SavedStateHandleobject parametresini alan bir oluşturucuya sahip olmalıdır.

Sürüm 2.1.0

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

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

Sürüm 2.1.0

5 Eylül 2019

androidx.lifecycle:lifecycle-*:2.1.0 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Sürüm 2.1.0-rc01

2 Temmuz 2019

androidx.lifecycle:*:2.1.0-rc01, androidx.lifecycle:*:2.1.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlanır. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.lifecycle:*:2.1.0-beta01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • Yaşam döngüleri beta sürümüne yükseltildi: Önceki alfa sürümlerinde kullanıma sunulan API'ler (ör. liveData dönüştürme ve gözlem için uzantı işlevleri, ViewModel özellik temsilcisiyle başlatma) kararlı hale getirildi ve değiştirilmeyecek.

Sürüm 2.1.0-alpha04

3 Nisan 2019

androidx.lifecycle:*:2.1.0-alpha04 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

  • Önemli değişiklik: by viewModels() ve by activityViewModels() işlevlerinin temelindeki API, doğrudan ViewModelStore öğesini destekleyecek şekilde değiştirildi. Artık yalnızca ViewModelStoreOwner öğesi desteklenmiyor. (aosp/932932)

Sürüm 2.1.0-alpha03

13 Mart 2019

androidx.lifecycle:*:2.1.0-alpha03 iptal edilir. Bu sürüme dahil edilen tüm commit'lerin listesini burada bulabilirsiniz.

API değişiklikleri

  • ViewModelProvider.KeyedFactory kaldırıldı. ViewModelProvider.Factory'a ek olarak ikinci arayüz, Kotlin'de mülk temsilciliği by viewmodels {} gibi yeni özelliklerle iyi çalışmıyordu. (aosp/914133)

Sürüm 2.1.0-alpha02

30 Ocak 2019

androidx.lifecycle 2.1.0-alpha02 iptal edilir.

API değişiklikleri

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

Hata düzeltmeleri

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

Sürüm 2.1.0-alpha01

17 Aralık 2018

androidx.lifecycle 2.1.0-alpha01 iptal edilir.

Yeni özellikler

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

Sürüm 2.0.0

Sürüm 2.0.0

21 Eylül 2018

Lifecycle 2.0.0, ViewModel'de 2.0.0-rc01 tarafından düzeltilen bir hata ile yayınlandı.

Hata Düzeltmeleri

  • Yapıcıları yanlışlıkla kaldıran ViewModel proguard kuralı düzeltildi. b/112230489

Sürüm 2.0.0-beta01

2 Temmuz 2018

Hata Düzeltmeleri

  • Yalnızca uygulamaları tutmak için LifecycleObserver proguard kuralı düzeltildi, alt arayüzler tutulmuyor b/71389427
  • Karartma ve küçültmeye izin vermek için ViewModel proguard kuralları düzeltildi.

AndroidX öncesi sürümler

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

dependencies {
    def lifecycle_version = "1.1.1"

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

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

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

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

Sürüm 1.1.1

21 Mart 2018

Yalnızca küçük bir değişiklik var: android.arch.core.util.Function, arch:runtime konumundan arch:common konumuna taşınıyor. Bu sayede, çalışma zamanı bağımlılığı olmadan (ör. aşağıdaki paging:common'da) kullanılabilir.

lifecycle:common, lifecycle:runtime öğesinin bağımlısı olduğundan bu değişiklik lifecycle:runtime öğesini doğrudan etkilemez. Yalnızca Paging gibi doğrudan lifecycle:common öğesine bağlı olan modüller etkilenir.

Sürüm 1.1.0

22 Ocak 2018

Paketleme Değişiklikleri

Artık yeni ve çok daha küçük bağımlılıklar kullanılabilir:

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

API Değişiklikleri

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