Sådan gemmes en Android-aktivitetstilstand ved hjælp af Save Instance State?

lagring og gendannelse af en aktivitet UI tilstand er en vigtig del af brugeroplevelsen. I sådanne tilfælde forventer klienten, at UI-staten fortsætter som før, men rammen nedbryder handlingen og enhver stat, der er til stede i den. Du har muligvis set under test, at skærmrotation nulstiller alle oplysninger indsamlet fra klienten. Det samme er tilfældet, når en bruger trykker på tilbage-knappen ved en fejltagelse. Skærmrotation er en af de mange livscyklusændringer i Android, der kan ødelægge og nulstille aktiviteten og få al information til at gå tabt. Absolut ikke en ekstraordinær brugeroplevelse!

for at gemme og gendanne UI-tilstand tilsidesætter jeg to mest almindelige metoder til dette formål:

Alt tekst

onSaveInstanceState ():

for at gemme sates of UI tilsidesætter jeg onSaveInstanceState(Bundle savedInstanceState) og gemmer alle data fra brugergrænsefladen i savedInstanceState Bundle.

denne metode kaldes før onStop() i ældre versioner af Android (indtil android 8.0) og kan kaldes efter onStop() for nyere versioner.

@Tilsidesæt
offentlig ugyldighed onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Gem UI-tilstandsændringer til savedInstanceState.
/ / denne pakke sendes til onCreate, hvis processen er
// dræbt og genstartet.
savedInstanceState.putBoolean (“StringKeyForBoolean”, false);
savedInstanceState.putDouble (“StringKeyForDouble”, 3.4);
savedInstanceState.putInt (“StringKeyForInteger”, 5);
gemt instancestate.putString (“StringKey”,”Folio3/blog”);
// etc.
}

bundtet er i det væsentlige en måde at lagre et NVP (“Name-Value Pair”) kort på, og det vil blive overført til onRestoreInstanceState (), hvor du derefter vil udtrække værdierne som denne:

alternativ tekst

denne metode kaldes efter onStart().

@Tilsidesæt
offentlig ugyldig onRestoreInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Gendan UI-tilstand ved hjælp af savedInstanceState.

Var1 = savedInstanceState.getBoolean (“StringKeyForBoolean”, falsk);
Var2 = savedInstanceState.getDouble (“StringKeyForDouble”);
Var3 = savedInstanceState.getInt (“StringKeyForInteger”);
Var4 = savedInstanceState.getString (“StringKey”);

}

på denne måde kan du gemme alle tilstande og andre datavariabler, der kan gå tabt ved skærmrotation, eller når den aktuelle aktivitet går i baggrunden. Gemme og genoprette stater i UI er en god praksis i Android app udvikling.
Bemærk: Når en aktivitet oprettes for første gang, vil der ikke være nogen data i pakken Gem instance state.

Tjek denne vejledning, hvis du planlægger at starte en app.



+