Sobes.tech
Junior — Middle

Hogyan biztosítható a rendszer aktuális állapotának megőrzése a konfiguráció módosításakor?

sobes.tech MI

Válasz az MI-től

Androidben a rendszer aktuális állapotának megőrzésére konfigurációs változás esetén (például képernyőforgatás) az Activity vagy Fragment állapotának mentési mechanizmusát használják.

Fő módszerek:

  1. onSaveInstanceState(Bundle outState) — módszer, amiben szükséges adatokat menthetünk egy Bundle objektumba. Ezek az adatok elérhetőek lesznek az Activity újraalkotásakor az onCreate vagy az onRestoreInstanceState módszerekben.

  2. ViewModel — az Android architektúra komponensei közül való, amely konfigurációs változás esetén megőrzi az adatokat, és nem újraalkotódik az Activity-vel együtt.

  3. UI komponensek állapotának mentése — sok standard widget automatikusan menti az állapotát, ha van egyedi azonosítója.

Példa egy számláló állapotának mentésére:

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
        // UI frissítése a jelenlegi counter értékkel
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("counter_key", counter)
    }
}

Így konfigurációs változás esetén az adatok nem vesznek el, és a felhasználó ugyanazt a felületet és állapotot látja.