Kaip užtikrinti esamos sistemos būsenos išsaugojimą keičiant konfigūraciją?
sobes.tech AI
Atsakymas iš AI
Android'e, konfigūracijos pakeitimo metu (pavyzdžiui, ekrano pasukimo) naudojamas Activity arba Fragment būsenos išsaugojimo mechanizmas.
Pagrindiniai būdai:
-
onSaveInstanceState(Bundle outState) — metodas, kuriame galima išsaugoti būtinus duomenis į Bundle objektą. Šie duomenys bus prieinami aktyvumo iš naujo sukūrimo metu onCreate arba onRestoreInstanceState.
-
ViewModel — iš architektūrinių Android komponentų, kuris išlaiko duomenis konfigūracijos pakeitimo metu ir nėra iš naujo sukuriamas kartu su aktyvumu.
-
UI komponentų būsenos išsaugojimas — daugelis standartinių widget'ų automatiškai išsaugo savo būseną, jei jiems priskirtas unikalus identifikatorius.
Pavyzdys: skaitiklio būsenos išsaugojimas:
class MainActivity : AppCompatActivity() {
private var counter = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
counter = savedInstanceState?.getInt("counter_key") ?: 0
// atnaujinti UI su dabartine counter reikšme
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
Šitaip, keičiant konfigūraciją, duomenys neprarandami, ir naudotojas mato tą patį interfeisą ir būseną.