Jak zajistit zachování aktuálního stavu systému při změně konfigurace?
sobes.tech AI
Odpověď od AI
V Androidu se při změně konfigurace (například otočení obrazovky) používá mechanismus ukládání stavu Activity nebo Fragmentu.
Hlavní způsoby:
-
onSaveInstanceState(Bundle outState) — metoda, do které lze uložit potřebná data do objektu Bundle. Tato data budou dostupná při znovuvytvoření Activity v metodách onCreate nebo onRestoreInstanceState.
-
ViewModel — komponenta z architektonických komponent Androidu, která uchovává data při změně konfigurace a není znovu vytvářena spolu s Activity.
-
Ukládání stavu UI komponent — mnoho standardních widgetů automaticky ukládá svůj stav, pokud mají přiřazen identifikátor.
Příklad ukládání 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
// aktualizace UI s aktuální hodnotou counter
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
Tímto způsobem při změně konfigurace data nezmizí a uživatel uvidí stejný rozhraní a stav.