Kuidas tagada süsteemi praeguse oleku säilitamine konfiguratsiooni muutmisel?
sobes.tech AI
Vastus AI-lt
Androidis, konfiguratsiooni muutmisel (näiteks ekraani pööramisel) kasutatakse Activity või Fragment'i oleku salvestamise mehhanismi.
Peamised viisid:
-
onSaveInstanceState(Bundle outState) — meetod, milles saab salvestada vajalikke andmeid Bundle objekti. Need andmed on saadaval Activity uuesti loomisel onCreate või onRestoreInstanceState meetodites.
-
ViewModel — Androidi arhitektuurikomponentidest, mis säilitavad andmeid konfiguratsiooni muutmisel ning ei loo uuesti koos Activity-ga.
-
UI komponentide oleku salvestamine — paljud standardvijetid salvestavad automaatselt oma oleku, kui neil on unikaalne identifikaator.
Näide: loenduri oleku salvestamine:
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
// uuenda UI praeguse counter väärtusega
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
Sellisel viisil ei kao andmed konfiguratsiooni muutmisel ning kasutaja näeb sama kasutajaliidest ja olekut.