Ako zabezpečiť zachovanie aktuálneho stavu systému pri zmene konfigurácie?
sobes.tech AI
Odpoveď od AI
V Androidu sa pri zmene konfigurácie (napríklad otočenie obrazovky) sa používa mechanizmus uloženia aktuálneho stavu systému prostredníctvom uloženia stavu Activity alebo Fragment.
Hlavné spôsoby:
-
onSaveInstanceState(Bundle outState) — metóda, do ktorej môžete uložiť potrebné údaje do objektu Bundle. Tieto údaje budú dostupné pri opätovnom vytvorení Activity v metódach onCreate alebo onRestoreInstanceState.
-
ViewModel — komponent z architektonických komponentov Androidu, ktorý uchováva údaje pri zmene konfigurácie a nie je znovu vytvorený spolu s Activity.
-
Uloženie stavu UI komponentov — mnoho štandardných widgetov automaticky uloží svoj stav, ak majú jedinečný identifikátor.
Príklad uloženia stavu počítadla:
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
// aktualizovať UI s aktuálnou hodnotou counter
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
Takto, pri zmene konfigurácie, údaje nebudú stratené a používateľ uvidí rovnaké rozhranie a stav.