Sobes.tech
Junior — Middle

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:

  1. 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.

  2. ViewModel — komponenta z architektonických komponent Androidu, která uchovává data při změně konfigurace a není znovu vytvářena spolu s Activity.

  3. 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.