Savedstate
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
11 Desember 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada SavedState, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
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") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.3
Versi 1.3.0-alpha06
11 Desember 2024
androidx.savedstate:savedstate-*:1.3.0-alpha06
dirilis. Versi 1.3.0-alpha06 berisi commit ini.
Fitur Baru
SavedState
KMP kini mendukung:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
, dan Serializable (Android). (I1ba94, b/334076622)- Tambahkan instance
KSerializer
yang dapat digunakan untuk mengenkode/mendekode jenis Java dan Android yang didukung oleh Bundle dengan menandai kolom yang relevan di class Anda dengan@Serializable(with = ParcelableSerializer::class)
. (I8c10f, I28caf, b/376026712) - Instance
SavedStateRegistryOwner
yang diambil melaluifindViewTreeSavedStateRegistryOwner
kini dapat di-resolve melalui induk tampilan yang tidak terhubung, sepertiViewOverlay
. Lihat catatan rilis core atau dokumentasi diViewTree.setViewTreeDisjointParent
untuk informasi selengkapnya tentang induk tampilan yang tidak terhubung. (Iccb33)
Perubahan API
- Membuat penamaan dan pengaturan paket lebih konsisten dengan
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744)
Versi 1.3.0-alpha05
13 November 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
dirilis. Versi 1.3.0-alpha05 berisi commit ini.
Dukungan Serialisasi KotlinX
SavedState
kini menyertakan dukungan KotlinX Serialization. Anda dapat mengonversi class yang dianotasi dengan@Serializable
menjadiSavedState
menggunakan metodeencodeToSavedState
dandecodeFromSavedState
.SavedState
yang ditampilkan adalahBundle
reguler di Android dan dapat digunakan oleh API apa pun yang menerimaBundle
. (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) }
Kami juga telah menyertakan
saved
, delegasi properti lambat, untuk memudahkan penyimpanan class@Serializable
diSavedStateRegistryOwner
(misalnya,ComponentActivity
,Fragment
, dll.) dan membuat class tersebut otomatis dipulihkan di seluruh proses penghentian dan pembuatan ulang. Perhatikan bahwa delegasisaved
lambat dan tidak akan memanggil lambdainit
atau menyimpan apa pun keSavedStateRegistry
hingga diakses. (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") } }
Ada delegasi properti
saved
serupa untukSavedStateHandle
yang ditambahkan di Siklus proses2.9.0-alpha07
.
Perubahan API
- Menambahkan
toMap
keSavedState
, sehinggaSavedState
dapat dikonversi keMap
reguler (salinan dangkal). (I487b9, b/334076622) SavedState
KMP kini mendukung array. (Ic0552, b/334076622)
Versi 1.3.0-alpha04
30 Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04
dirilis. Versi 1.3.0-alpha04 berisi commit ini.
Perubahan API
- KMP SavedState kini mendukung Char. (I9ac2f, b/334076622)
- Menambahkan
putNull
danisNull
ke KMP SavedState. (Iea71d, b/334076622) - Menambahkan parameter factory
savedState
tambahan yang mendukungMap<String, Any>
awal (I9b37d, b/334076622) - KMP SavedState kini mendukung perbandingan
contentDeepEquals
. (Ia515c, b/334076622) - SavedState KMP kini mendukung Long. (I4c180, b/334076622)
Versi 1.3.0-alpha03
16 Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03
dirilis tanpa perubahan penting. Versi 1.3.0-alpha03 berisi commit ini.
Versi 1.3.0-alpha02
2 Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Multiplatform Kotlin
- Modul
SavedState
kini kompatibel dengan KMP. Platform yang didukung kini mencakup lingkungan desktop Android, iOS, Linux, Mac, dan JVM. (I26305, b/334076622)
Fitur Baru
- Memperkenalkan jenis buram
SavedState
sebagai abstraksi untuk memberikan cara yang konsisten untuk menyimpan dan memulihkan status aplikasi di KMP. Ini mencakupSavedStateReader
danSavedStateWriter
untuk mengubah status yang akan disimpan. Di Android,SavedState
adalah alias jenis untukBundle
, yang memastikan kompatibilitas biner dan memfasilitasi migrasi API yang ada ke set sumber umum. Di platform lain,SavedState
adalah instanceMap<String, Any>
. (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")
}
Perubahan API
SavedStateRegistry
danSavedStateRegistryController
kini kompatibel dengan KMP. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
, danSavedStateReader
kini kompatibel dengan KMP. (I26305, b/334076622)
Versi 1.3.0-alpha01
7 Agustus 2024
androidx.savedstate:savedstate:1.3.0-alpha01
dan androidx.savedstate:savedstate-ktx:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Perubahan API
- Ekstensi kotlin
savedstate-ktx
kini telah dipindahkan ke modul savedstate dasar. (I1cc18, b/274803094)
Catatan
- Memperbarui
compileSdk
menjadi 35 (5dc41be)
Versi 1.2.1
Versi 1.2.1
22 Maret 2023
androidx.savedstate:savedstate:1.2.1
dan androidx.savedstate:savedstate-ktx:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Update Dependensi
SavedState
kini bergantung pada Lifecycle2.6.1
. (c1f621)
Versi 1.2.0
Versi 1.2.0
29 Juni 2022
androidx.savedstate:savedstate:1.2.0
dan androidx.savedstate:savedstate-ktx:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
SavedStateRegistryController
sekarang memungkinkan lampiranSavedStateRegistry
awal melaluiperformAttach()
.- Anda kini dapat mengambil
SavedStateProvider
yang sebelumnya terdaftar dariSavedStateRegistry
melaluigetSavedStateProvider()
. - Library
SavedState
telah ditulis ulang di Kotlin.- Untuk
SavedStateRegistryOwner
, ini adalah perubahan sumber yang tidak kompatibel untuk class tersebut yang ditulis di Kotlin - Anda sekarang harus mengganti propertisavedStateRegistry
, bukan mengimplementasikan fungsigetSavedStateRegistry()
sebelumnya. - Untuk
ViewTreeSavedStateRegistryOwner
, ini adalah perubahan yang tidak kompatibel dengan sumber untuk class tersebut yang ditulis di Kotlin - Anda sekarang harus secara langsung mengimpor dan menggunakan metode ekstensi Kotlin diView
dariandroidx.savedstate.setViewTreeSavedStateRegistryOwner
danandroidx.savedstate.findViewTreeSavedStateRegistryOwner
untuk menetapkan dan menemukan pemilik yang ditetapkan sebelumnya. Ini menggantikan APIsavedstate-ktx
darifindViewTreeSavedStateRegistryOwner
.
- Untuk
Perubahan Perilaku
SavedStateRegistry
tidak lagi menyimpan Paket kosong jika tidak ada status yang akan disimpan.
Versi 1.2.0-rc01
11 Mei 2022
androidx.savedstate:savedstate:1.2.0-rc01
dan androidx.savedstate:savedstate-ktx:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
Perubahan Dokumentasi
- Kdocs
SavedStateRegistryOwner
telah diupdate untuk memperjelas tanggung jawab dan kontrak yang dimiliki pemilik terkait cara menerapkan antarmuka atau kapan mereka harus memanggil metode diSavedStateRegistryController
. (Iefc95, b/228887344)
Versi 1.2.0-beta01
20 April 2022
androidx.savedstate:savedstate:1.2.0-beta01
dan androidx.savedstate:savedstate-ktx:1.2.0-beta01
dirilis. Versi 1.2.0-beta01 berisi commit ini.
Perubahan API
- Class
SavedStateRegistry
danViewTreeSavedStateRegistryOwner
telah ditulis ulang dalam Kotlin. UntukViewTreeSavedStateRegistryOwner
, ini adalah perubahan yang tidak kompatibel dengan sumber untuk class tersebut yang ditulis di Kotlin - Anda sekarang harus secara langsung mengimpor dan menggunakan metode ekstensi Kotlin diView
dariandroidx.savedstate.setViewTreeSavedStateRegistryOwner
danandroidx.savedstate.findViewTreeSavedStateRegistryOwner
untuk menetapkan dan menemukan pemilik yang ditetapkan sebelumnya. Ini menggantikan APIsavedstate-ktx
darifindViewTreeSavedStateRegistryOwner
. Ini kompatibel dengan biner dan tetap kompatibel dengan sumber untuk implementasi yang ditulis dalam bahasa pemrograman Java. (b/220191285)
Versi 1.2.0-alpha02
6 April 2022
androidx.savedstate:savedstate:1.2.0-alpha02
dan androidx.savedstate:savedstate-ktx:1.2.0-alpha02
dirilis. Versi 1.2.0-alpha02 berisi commit ini.
Fitur Baru
- Anda kini dapat mengambil
SavedStateProvider
yang sebelumnya terdaftar dariSavedStateRegistry
melaluigetSavedStateProvider()
. (I7ea47, b/215406268)
Perubahan API
- Class
SavedStateRegistryOwner
,SavedStateRegistryController
, danRecreator
telah ditulis ulang dalam Kotlin. UntukSavedStateRegistryOwner
, ini adalah perubahan sumber yang tidak kompatibel untuk class tersebut yang ditulis di Kotlin - Anda sekarang harus mengganti propertisavedStateRegistry
, bukan mengimplementasikan fungsigetSavedStateRegistry()
sebelumnya. Ini kompatibel dengan biner dan kompatibel dengan sumber untuk implementasi yang ditulis dalam bahasa pemrograman Java. (b/220191285)
Versi 1.2.0-alpha01
26 Januari 2022
androidx.savedstate:savedstate:1.2.0-alpha01
dan androidx.savedstate:savedstate-ktx:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Fitur Baru
SavedStateRegistryController
sekarang memungkinkan lampiranSavedStateRegistry
awal melaluiperformAttach()
. (Ice4bf)
Perubahan Perilaku
SavedStateRegistry
tidak lagi menyimpan Paket kosong jika tidak ada status yang akan disimpan. (aosp/1896865, b/203457956)
Versi 1.1.0
Versi 1.1.0
10 Februari 2021
androidx.savedstate:savedstate:1.1.0
dan androidx.savedstate:savedstate-ktx:1.1.0
dirilis. Versi 1.1.0 berisi commit ini.
Perubahan utama sejak versi 1.0.0
ViewTreeSavedStateRegistryOwner
API:ViewTreeSavedStateRegistryOwner.get(View)
API yang baru memungkinkan Anda mengambil instanceView
yang berisiSavedStateRegistry
. Anda harus melakukan upgrade ke Activity1.2.0
, Fragment1.3.0
, dan AppCompat1.3.0-alpha01
atau yang lebih tinggi untuk mengisi ini dengan benar.- Artefak
savedstate-ktx
: Artefaksavedstate-ktx
baru telah ditambahkan dengan ekstensi KotlinfindViewTreeSavedStateRegistryOwner()
untuk digunakan denganViewTreeSavedStateRegistryOwner
.
Versi 1.1.0-rc01
16 Desember 2020
androidx.savedstate:savedstate:1.1.0-rc01
dan androidx.savedstate:savedstate-ktx:1.1.0-rc01
dirilis tanpa perubahan sejak 1.1.0-beta01
. Versi 1.1.0-rc01 berisi commit ini.
Versi 1.1.0-beta01
1 Oktober 2020
androidx.savedstate:savedstate:1.1.0-beta01
dan androidx.savedstate:savedstate-ktx:1.1.0-beta01
dirilis tanpa perubahan sejak 1.1.0-alpha01
. Versi 1.1.0-beta01 berisi commit ini.
Versi 1.1.0-alpha01
20 Mei 2020
androidx.savedstate:savedstate:1.1.0-alpha01
dan androidx.savedstate:savedstate-ktx:1.1.0-alpha01
dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Fitur Baru
ViewTreeSavedStateRegistryOwner.get(View)
API yang baru memungkinkan Anda mengambil instanceView
berisiSavedStateRegistry
. Anda harus melakukan upgrade ke Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
, dan AppCompat1.3.0-alpha01
untuk mengisi ini dengan benar. (aosp/1298679)- Artefak
savedstate-ktx
baru telah ditambahkan dengan ekstensi KotlinfindViewTreeSavedStateRegistryOwner()
untuk digunakan denganViewTreeSavedStateRegistryOwner
. (aosp/1299434)
Versi 1.0.0
Versi 1.0.0
5 September 2019
androidx.savedstate:savedstate:1.0.0
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur utama SavedState 1.0.0
androidx.savedstate
lulus ke rilis stabil. Ini adalah sekumpulan API yang memungkinkan developer memasukkan komponen ke proses restore/saveInstanceState. Titik masuk utama API ini adalah SavedStateRegistry
, yang menyediakan cara untuk mengambil status yang telah disimpan sebelumnya menggunakan consumeRestoredStateForKey
dan mendaftarkan callback ke registerSavedStateProvider
untuk memberikan status tersimpan saat sistem memintanya.
Versi 1.0.0-rc01
2 Juli 2019
androidx.savedstate:savedstate:1.0.0-rc01
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Memperbaiki aturan proguard yang salah. (b/132655499)
Versi 1.0.0-beta01
7 Mei 2019
androidx.savedstate:savedstate:1.0.0-beta01
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Versi 1.0.0-alpha02
13 Maret 2019
androidx.savedstate:savedstate:1.0.0-alpha02
dirilis. androidx.savedstate:savedstate
menggabungkan artefak androidx.savedstate:savedstate-bundle
dan androidx.savedstate:savedstate-common
menjadi satu artefak, karena perlunya menyederhanakan infrastruktur savedstate dan menghapus generik dari SavedStateRegistry
. Dengan demikian, modul terpisah tidak diperlukan.
Daftar lengkap commit yang disertakan dalam versi ini dapat ditemukan di sini.
Fitur baru
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
ditambahkan. Instance class yang ditentukan akan dibuat dan metodeAutoRecreated.onRecreated
akan dijalankan saat komponen yang memilikinya dimulai ulang.
Perubahan API
- Generik dihapus dari
SavedStateRegistry<T>
- AbstractSavedStateRegistry & BundlableSavedStateRegistry dihapus, sebagai gantinya, gunakan
SavedStateRegistry
sederhana BundleSavedStateRegistryOwner
diganti nama menjadiSavedStateRegistryOwner
Versi 1.0.0-alpha01
17 Desember 2018
Ini adalah rilis pertama SavedState
.
Fitur baru
androidx.savedstate
adalah sekumpulan API alfa baru yang memungkinkan developer memasukkan komponen ke proses restore/saveInstanceState. Titik masuk utama API ini adalah SavedStateRegistry<T>
, yang menyediakan cara untuk mengambil savedstate sebelumnya menggunakan consumeRestoredStateForKey
dan mendaftarkan callback ke registerSavedStateProvider
untuk memberikan savedstate saat sistem memintanya.