spara och återställa en aktivitet UI tillstånd är en viktig del av användarupplevelsen. I sådana fall förväntar sig klienten att UI-staten fortsätter som tidigare, men ramverket förstör åtgärden och alla stater som finns i den. Du kanske har sett under testningen att skärmrotation återställer all information som samlats in från klienten. Samma är fallet när en användare trycker på bakåtknappen av misstag. Skärmrotation är en av de många livscykelförändringarna i Android som kan förstöra och återställa aktiviteten och orsaka att all information går förlorad. Definitivt inte en extraordinär användarupplevelse!
för att spara och återställa UI-tillståndet åsidosätter jag två vanligaste metoder för detta ändamål:
onSaveInstanceState ():
för att spara satser av användargränssnitt, åsidosätter jag onSaveInstanceState (Bundle savedInstanceState) och sparar alla data i användargränssnittet i savedInstanceState Bundle.
denna metod kallas före onStop () i äldre versioner av Android (till android 8.0) och kan anropas efter onStop () för nyare versioner.
@ åsido
offentliga tomrum onSaveInstanceState(bunt savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// spara UI-tillståndsändringar i savedInstanceState.
// detta paket skickas till onCreate om processen är
/ / dödad och startas om.
savedInstanceState.putBoolean (”StringKeyForBoolean”, false);
savedInstanceState.putDouble (”StringKeyForDouble”, 3.4);
savedInstanceState.putInt (”StringKeyForInteger”, 5);
savedInstanceState.putString (”StringKey”,”Folio3/blogg”);
// etc.
}
buntet är i huvudsak ett sätt att lagra en NVP (”Name-Value Pair”) – karta, och det kommer att överföras till onRestoreInstanceState () där du då skulle extrahera värdena så här:
denna metod anropas efter onStart ().
@åsido
Offentlig void onRestoreInstanceState(bunt savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Återställ UI-tillstånd med savedInstanceState.
Var1 = savedInstanceState.getBoolean (”StringKeyForBoolean”, false);
Var2 = savedInstanceState.getDouble (”StringKeyForDouble”);
Var3 = savedInstanceState.getInt (”StringKeyForInteger”);
Var4 = savedInstanceState.getString (”StringKey”);
}
på så sätt kan du spara alla tillstånd och andra datavariabler som kan gå förlorade vid skärmrotation eller när den aktuella aktiviteten går in i bakgrunden. Spara och återställa stater UI är en god praxis i android app utveckling.
notera: När en aktivitet skapas för första gången kommer det inte att finnas några data i paketet save instance state.
kolla in den här guiden om du planerar att starta en app.