Savedstate

Bir işlem sona erdiğinde kullanıcı arayüzü durumunu kaydeden ve işlem yeniden başlatıldığında durumu geri yükleyen takılabilir bileşenler yazın.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
11 Aralık 2024 1.2.1 - - 1.3.0-alpha06

Bağımlılıkları beyan etme

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

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

Groovy

dependencies {
    // Java language implementation
    implementation "androidx.savedstate:savedstate:1.2.1"

    // Kotlin
    implementation "androidx.savedstate:savedstate-ktx:1.2.1"
}

Kotlin

dependencies {
    // Java language implementation
    implementation("androidx.savedstate:savedstate:1.2.1")

    // Kotlin
    implementation("androidx.savedstate:savedstate-ktx:1.2.1")
}

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

Geri bildirim

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

Yeni sorun oluşturma

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

Sürüm 1.3

Sürüm 1.3.0-alpha06

11 Aralık 2024

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

Yeni Özellikler

  • SavedState KMP artık IBinder, Size, SizeF, Array<Parcelable>, SparseArray<Parcelable> ve Serializable (Android) türlerini destekliyor. (I1ba94, b/334076622)
  • Sınıfınızdaki ilgili alanı @Serializable(with = ParcelableSerializer::class) ile işaretleyerek Bundle tarafından desteklenen Java ve Android türlerini kodlamak/kodu çözmek için kullanılabilecek KSerializer örnekleri ekleyin. (I8c10f, I28caf, b/376026712)
  • findViewTreeSavedStateRegistryOwner aracılığıyla alınan SavedStateRegistryOwner örnekleri artık bir görünümün ayrı ebeveynleri (ör. ViewOverlay) aracılığıyla çözülebilir. Ayrık görünüm üst öğeleri hakkında daha fazla bilgi için çekirdeğin sürüm notlarına veya ViewTree.setViewTreeDisjointParent adresindeki dokümanlara bakın. (Iccb33)

API Değişiklikleri

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

Sürüm 1.3.0-alpha05

13 Kasım 2024

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

KotlinX Serileştirme Desteği

  • SavedState artık KotlinX Serileştirme desteği içeriyor. encodeToSavedState ve decodeFromSavedState yöntemlerini kullanarak @Serializable ile ek açıklama eklenmiş bir sınıfı SavedState olarak dönüştürebilirsiniz. Döndürülen SavedState, Android'de normal bir Bundle'tir ve Bundle kabul eden herhangi bir API tarafından kullanılabilir. (I6f59f, b/374102924)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    fun main() {
        val person = Person("John", "Doe")
        val encoded: SavedState = encodeToSavedState(person)
        val decoded: Person = decodeFromSavedState(encoded)
    }
    
  • Ayrıca, @Serializable sınıflarını SavedStateRegistryOwner içinde (ör.saved ComponentActivity, Fragment vb.) ekleyebilir ve bu sınıfların işlem sona erdiğinde ve yeniden oluşturulduğunda otomatik olarak geri yüklenmesini sağlayabilirsiniz. saved temsilcisinin, erişilene kadar init lambda'sını çağırmayacağını veya SavedStateRegistry'ye hiçbir şey kaydetmeyeceğini lütfen unutmayın. (I66739, b/376027806)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyActivity : ComponentActivity() {
        var person by saved { Person("John", "Doe") }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            this.person = Person("Jane", "Doe")
        }
    }
    
  • Yaşam döngüsü 2.9.0-alpha07'ne eklenen SavedStateHandle için benzer bir saved mülk temsilcisi var.

API Değişiklikleri

  • toMapSavedState'a ekleyin. Böylece, tüm SavedState'ler normal Map'e (sığ kopya) dönüştürülebilir. (I487b9, b/334076622)
  • SavedState KMP artık dizileri destekliyor. (Ic0552, b/334076622)

Sürüm 1.3.0-alpha04

30 Ekim 2024

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

API Değişiklikleri

Sürüm 1.3.0-alpha03

16 Ekim 2024

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

Sürüm 1.3.0-alpha02

2 Ekim 2024

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

Kotlin Çok Platformlu

  • SavedState modülü artık KMP ile uyumludur. Desteklenen platformlar arasında artık Android, iOS, Linux, Mac ve JVM masaüstü ortamları da yer alıyor. (I26305, b/334076622)

Yeni Özellikler

  • KMP'de uygulama durumunu kaydetme ve geri yükleme için tutarlı bir yol sağlamak amacıyla soyutlama olarak SavedState opak türünü kullanıma sunun. Kaydedilecek durumu değiştirmek için bir SavedStateReader ve SavedStateWriter içerir. Android'de SavedState, Bundle için bir tür takma adıdır. Bu takma ad, ikili uyumluluğu sağlar ve mevcut API'lerin ortak bir kaynak kümesine taşınmasını kolaylaştırır. Diğer platformlarda SavedState, Map<String, Any> örneğidir. (I18575, b/334076622)
  // Create a new SavedState object using the savedState DSL:
  val savedState = savedState {
    putInt("currentPage", 1)
    putString("filter", "favorites")
  }

  // Read from a SavedState object
  val currentPage = savedState.read { getInt("currentPage") }

  // Edit an existing SavedState object
  savedState.write {
    remove("currentPage")
  }

API Değişiklikleri

  • SavedStateRegistry ve SavedStateRegistryController artık KMP ile uyumlu. (Id7bb8, b/334076622)
  • SavedState, SavedStateWriter ve SavedStateReader artık KMP uyumlu. (I26305, b/334076622)

Sürüm 1.3.0-alpha01

7 Ağustos 2024

androidx.savedstate:savedstate:1.3.0-alpha01 ve androidx.savedstate:savedstate-ktx:1.3.0-alpha01 yayınlandı. 1.3.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • savedstate-ktx kotlin uzantıları artık temel savedstate modülüne taşındı. (I1cc18, b/274803094)

Not

  • compileSdk değerini 35 olarak güncelleyin (5dc41be)

Sürüm 1.2.1

Sürüm 1.2.1

22 Mart 2023

androidx.savedstate:savedstate:1.2.1 ve androidx.savedstate:savedstate-ktx:1.2.1 yayınlandı. 1.2.1 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

Sürüm 1.2.0

Sürüm 1.2.0

29 Haziran 2022

androidx.savedstate:savedstate:1.2.0 ve androidx.savedstate:savedstate-ktx:1.2.0 yayınlandı. 1.2.0 sürümü bu taahhütleri içerir.

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

  • SavedStateRegistryController artık performAttach() üzerinden SavedStateRegistry'un erken eklenmesine izin veriyor.
  • Artık getSavedStateProvider() aracılığıyla daha önce kaydedilmiş bir SavedStateProvider'yi SavedStateRegistry'den alabilirsiniz.
  • SavedState kitaplığı Kotlin'de yeniden yazıldı.
    • SavedStateRegistryOwner için bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık önceki getSavedStateRegistry() işlevini uygulamak yerine savedStateRegistry mülkünü geçersiz kılmanız gerekir.
    • ViewTreeSavedStateRegistryOwner için bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için androidx.savedstate.setViewTreeSavedStateRegistryOwner ve androidx.savedstate.findViewTreeSavedStateRegistryOwner'in View bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu API, findViewTreeSavedStateRegistryOwner'ın savedstate-ktx API'sinin yerini almıştır.

Davranış Değişiklikleri

  • SavedStateRegistry artık kaydedilecek durum yoksa boş bir paket kaydetmez.

Sürüm 1.2.0-rc01

11 Mayıs 2022

androidx.savedstate:savedstate:1.2.0-rc01 ve androidx.savedstate:savedstate-ktx:1.2.0-rc01 yayınlandı. 1.2.0-rc01 sürümü bu taahhütleri içerir.

Belge Değişiklikleri

  • SavedStateRegistryOwner Kdocs, sahibin arayüzü nasıl uygulaması veya SavedStateRegistryController'daki yöntemleri ne zaman çağırması gerektiğiyle ilgili sorumluluklarını ve sözleşmesini netleştirmek için güncellendi. (Iefc95, b/228887344)

Sürüm 1.2.0-beta01

20 Nisan 2022

androidx.savedstate:savedstate:1.2.0-beta01 ve androidx.savedstate:savedstate-ktx:1.2.0-beta01 yayınlandı. 1.2.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateRegistry ve ViewTreeSavedStateRegistryOwner sınıfları Kotlin'de yeniden yazıldı. ViewTreeSavedStateRegistryOwner için bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık daha önce ayarlanmış bir sahibi ayarlamak ve bulmak için androidx.savedstate.setViewTreeSavedStateRegistryOwner ve androidx.savedstate.findViewTreeSavedStateRegistryOwner'in View bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu API, findViewTreeSavedStateRegistryOwner'ın savedstate-ktx API'sinin yerini almıştır. Bu sürüm, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (b/220191285)

Sürüm 1.2.0-alpha02

6 Nisan 2022

androidx.savedstate:savedstate:1.2.0-alpha02 ve androidx.savedstate:savedstate-ktx:1.2.0-alpha02 yayınlandı. 1.2.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık getSavedStateProvider() aracılığıyla daha önce kayıtlı bir SavedStateProvider'yi SavedStateRegistry'den alabilirsiniz. (I7ea47, b/215406268)

API Değişiklikleri

  • SavedStateRegistryOwner, SavedStateRegistryController ve Recreator sınıfları Kotlin'de yeniden yazıldı. SavedStateRegistryOwner için bu, Kotlin'de yazılmış sınıflar için kaynak uyumsuz bir değişikliktir. Artık önceki getSavedStateRegistry() işlevini uygulamak yerine savedStateRegistry mülkünü geçersiz kılmanız gerekir. Bu, Java programlama dilinde yazılmış uygulamalar için ikili uyumlu ve kaynak uyumludur. (b/220191285)

Sürüm 1.2.0-alpha01

26 Ocak 2022

androidx.savedstate:savedstate:1.2.0-alpha01 ve androidx.savedstate:savedstate-ktx:1.2.0-alpha01 yayınlandı. 1.2.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • SavedStateRegistryController artık SavedStateRegistry'un performAttach() üzerinden erken eklenmesine izin veriyor. (Ice4bf)

Davranış Değişiklikleri

Sürüm 1.1.0

Sürüm 1.1.0

10 Şubat 2021

androidx.savedstate:savedstate:1.1.0 ve androidx.savedstate:savedstate-ktx:1.1.0 yayınlandı. 1.1.0 sürümü bu taahhütleri içerir.

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

  • ViewTreeSavedStateRegistryOwner API: Yeni bir ViewTreeSavedStateRegistryOwner.get(View) API, bir View örneği verildiğinde kapsayıcı SavedStateRegistry'i almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Activity 1.2.0, Fragment 1.3.0 ve AppCompat 1.3.0-alpha01 veya sonraki bir sürüme yükseltmeniz gerekir.
  • savedstate-ktx yapı öğesi: Yeni savedstate-ktx yapı öğesi, ViewTreeSavedStateRegistryOwner ile çalışmak için bir findViewTreeSavedStateRegistryOwner() Kotlin uzantısıyla eklendi.

Sürüm 1.1.0-rc01

16 Aralık 2020

androidx.savedstate:savedstate:1.1.0-rc01 ve androidx.savedstate:savedstate-ktx:1.1.0-rc01, 1.1.0-beta01 tarihinden beri herhangi bir değişiklik yapılmadan yayınlandı. 1.1.0-rc01 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-beta01

1 Ekim 2020

androidx.savedstate:savedstate:1.1.0-beta01 ve androidx.savedstate:savedstate-ktx:1.1.0-beta01, 1.1.0-alpha01 tarihinden beri herhangi bir değişiklik yapılmadan yayınlandı. 1.1.0-beta01 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-alpha01

20 Mayıs 2020

androidx.savedstate:savedstate:1.1.0-alpha01 ve androidx.savedstate:savedstate-ktx:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Yeni ViewTreeSavedStateRegistryOwner.get(View) API, bir View örneği verildiğinde kapsayıcı SavedStateRegistry'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik 1.2.0-alpha05, Fragment 1.3.0-alpha05 ve AppCompat 1.3.0-alpha01'e yükseltmeniz gerekir. (aosp/1298679)
  • Yeni savedstate-ktx yapı, ViewTreeSavedStateRegistryOwner ile çalışmak için bir findViewTreeSavedStateRegistryOwner() Kotlin uzantısıyla eklendi. (aosp/1299434)

Sürüm 1.0.0

Sürüm 1.0.0

5 Eylül 2019

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

SavedState 1.0.0'ın önemli özellikleri

androidx.savedstate kararlı sürüme geçti. Bu, geliştiricilerin restore / saveInstanceState sürecine bileşen eklemelerine olanak tanıyan bir API grubudur. API'nin ana giriş noktası SavedStateRegistry'tür. Bu API, consumeRestoredStateForKey kullanılarak daha önce kaydedilmiş durumların alınmasına ve sistem isterse kaydedilmiş bir durumu sağlamak için registerSavedStateProvider'ye geri çağırma işlevi kaydedilmesine olanak tanır.

Sürüm 1.0.0-rc01

2 Temmuz 2019

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

Hata düzeltmeleri

Sürüm 1.0.0-beta01

7 Mayıs 2019

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

Sürüm 1.0.0-alpha02

13 Mart 2019

androidx.savedstate:savedstate:1.0.0-alpha02 yayınlanır. androidx.savedstate:savedstate, savedstate altyapısını basitleştirmeye ve SavedStateRegistry'ten genel öğeleri kaldırmaya karar verildiği için androidx.savedstate:savedstate-bundle ve androidx.savedstate:savedstate-common yapılarını tek bir yapıda birleştirir. Bu nedenle, ayrı modüllere gerek yoktur.

Bu sürüme dahil edilen tüm taahhütlerin tam listesini burada bulabilirsiniz.

Yeni özellikler

  • SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz ) eklendi. Belirtilen sınıf örneklenir ve sahip bileşen yeniden başlatıldığında AutoRecreated.onRecreated yöntemi çalıştırılır.

API değişiklikleri

  • Jenerik ürünler SavedStateRegistry<T>'ten kaldırıldı
  • AbstractSavedStateRegistry ve BundlableSavedStateRegistry kaldırıldı. Bunun yerine basit SavedStateRegistry kullanın
  • BundleSavedStateRegistryOwner, SavedStateRegistryOwner olarak yeniden adlandırıldı

Sürüm 1.0.0-alpha01

17 Aralık 2018

Bu, SavedState'ün ilk sürümü.

Yeni özellikler

androidx.savedstate, geliştiricilerin restore / saveInstanceState işlemine bileşen eklemesine olanak tanıyan yeni bir alfa API grubudur. API'nin ana giriş noktası SavedStateRegistry<T>'tür. Bu API, daha önce kaydedilen durumu consumeRestoredStateForKey aracılığıyla alma ve sistem isterse kaydedilen durumu sağlamak için registerSavedStateProvider'ye geri çağırma işlevi kaydetme olanağı sunar.