Savedstate
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
13 Kasım 2024 | 1.2.1 | - | - | 1.3.0-alpha05 |
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.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.3
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
vedecodeFromSavedState
yöntemlerini kullanarak@Serializable
ile ek açıklama eklenmiş bir sınıfıSavedState
olarak dönüştürebilirsiniz. DöndürülenSavedState
, Android'de normal birBundle
'tir veBundle
kabul eden tüm API'ler 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 kadarinit
lambda'sını çağırmayacağını veyaSavedStateRegistry
'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 eklenenSavedStateHandle
için benzer birsaved
mülk temsilcisi var.
API Değişiklikleri
toMap
'üSavedState
'e ekleyin. Böylece, tümSavedState
'ler normalMap
'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
- SavedState KMP artık Char'ı desteklemektedir. (I9ac2f, b/334076622)
- SavedState KMP'ye
putNull
veisNull
ekleyin. (Iea71d, b/334076622) - İlk
Map<String, Any>
'ı (I9b37d, b/334076622) destekleyen eksavedState
fabrika parametreleri ekleyin - SavedState KMP artık
contentDeepEquals
karşılaştırmasını destekliyor. (Ia515c, b/334076622) - SavedState KMP artık Long türünü destekliyor. (I4c180, b/334076622)
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 yöntem sunmak amacıyla soyutlama olarak
SavedState
opak türünü kullanıma sunun. Kaydedilecek durumu değiştirmek için birSavedStateReader
veSavedStateWriter
içerir. Android'deSavedState
,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 platformlardaSavedState
,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
veSavedStateRegistryController
artık KMP ile uyumlu. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
veSavedStateReader
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
SavedState
artık Yaşam Döngüsü2.6.1
'e bağlıdır. (c1f621)
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ıkSavedStateRegistry
'uperformAttach()
üzerinden erken eklemeye izin veriyor.- Artık
getSavedStateProvider()
aracılığıyla daha önce kayıtlı birSavedStateProvider
'yiSavedStateRegistry
'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 öncekigetSavedStateRegistry()
işlevini uygulamak yerinesavedStateRegistry
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çinandroidx.savedstate.setViewTreeSavedStateRegistryOwner
veandroidx.savedstate.findViewTreeSavedStateRegistryOwner
sınıflarınınView
bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu API,findViewTreeSavedStateRegistryOwner
'ınsavedstate-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ı veyaSavedStateRegistryController
'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
veViewTreeSavedStateRegistryOwner
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çinandroidx.savedstate.setViewTreeSavedStateRegistryOwner
veandroidx.savedstate.findViewTreeSavedStateRegistryOwner
sınıflarınınView
bölümündeki Kotlin uzantı yöntemlerini doğrudan içe aktarıp kullanmanız gerekir. Bu API,findViewTreeSavedStateRegistryOwner
'ınsavedstate-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ı birSavedStateProvider
'yiSavedStateRegistry
'den alabilirsiniz. (I7ea47, b/215406268)
API Değişiklikleri
SavedStateRegistryOwner
,SavedStateRegistryController
veRecreator
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 öncekigetSavedStateRegistry()
işlevini uygulamak yerinesavedStateRegistry
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ıkSavedStateRegistry
'unperformAttach()
üzerinden erken eklenmesine izin veriyor. (Ice4bf)
Davranış Değişiklikleri
SavedStateRegistry
artık kaydedilecek durum yoksa boş bir paket kaydetmez. (aosp/1896865, b/203457956)
1.1.0 sürümü
1.1.0 sürümü
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 birViewTreeSavedStateRegistryOwner.get(View)
API, birView
örneği verildiğinde kapsayıcıSavedStateRegistry
öğesini almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Activity1.2.0
, Fragment1.3.0
ve AppCompat1.3.0-alpha01
veya sonraki bir sürüme yükseltmeniz gerekir.savedstate-ktx
yapı öğesi: Yenisavedstate-ktx
yapı öğesi,ViewTreeSavedStateRegistryOwner
ile çalışmak için birfindViewTreeSavedStateRegistryOwner()
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, birView
örneği verildiğinde kapsayıcıSavedStateRegistry
'ı almanıza olanak tanır. Bu alanı doğru şekilde doldurmak için Etkinlik1.2.0-alpha05
, Fragment1.3.0-alpha05
ve AppCompat1.3.0-alpha01
'e yükseltmeniz gerekir. (aosp/1298679) - Yeni
savedstate-ktx
yapı,ViewTreeSavedStateRegistryOwner
ile çalışmak için birfindViewTreeSavedStateRegistryOwner()
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
- Yanlış ProGuard kuralı düzeltildi (b/132655499)
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
'tan 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 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ığındaAutoRecreated.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 nokta, 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.