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