het opslaan en herstellen van een ui-status van een activiteit is een belangrijk onderdeel van de gebruikerservaring. In dergelijke gevallen verwacht de klant dat de UI-staat doorgaat zoals voorheen, maar het kader vernietigt de actie en elke staat die erin aanwezig is. Je hebt misschien tijdens het testen gezien dat schermrotatie alle informatie die van de client is verzameld, Reset. Hetzelfde is het geval wanneer een gebruiker per ongeluk op de knop Terug drukt. Schermrotatie is een van de vele levenscyclusveranderingen in Android die de activiteit kunnen vernietigen en resetten en ervoor zorgen dat alle informatie verloren gaat. Zeker geen buitengewone gebruikerservaring!
om UI-status op te slaan en te herstellen, overschrijf ik twee meest voorkomende methoden voor dit doel:
onSaveInstanceState ():
om sates van UI op te slaan, overschrijf ik onSaveInstanceState (bundel savedInstanceState) en sla alle gegevens van de UI op in savedInstanceState bundel.
deze methode wordt aangeroepen voor onStop () in oudere versies van Android (tot android 8.0) en kan worden aangeroepen na onStop () voor nieuwere versies.
@Override
public void onSaveInstanceState (bundel savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// save UI statuswijzigingen in de savedInstanceState.
/ / deze bundel zal worden doorgegeven aan onCreate als het proces
/ / is afgesloten en herstart.
savedInstanceState.putBoolean (“StringKeyForBoolean”, false);
savedInstanceState.putDouble (“StringKeyForDouble”, 3.4);
savedInstanceState.putInt (“StringKeyForInteger”, 5);
savedInstanceState.putString (“StringKey”,”Folio3/blog”);
/ / etc.
}
de bundel is in wezen een manier om een NVP (“Name-Value Pair”) kaart op te slaan, en het zal worden doorgegeven aan onRestoreInstanceState () waar je dan de waarden als deze zou extraheren:
deze methode wordt aangeroepen na onStart ().
@Override
public void onRestoreInstanceState (bundel savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Ui-status herstellen met savedInstanceState.
Var1 = savedInstanceState.getBoolean (“StringKeyForBoolean”, false);
Var2 = savedInstanceState.getDouble (“StringKeyForDouble”);
Var3 = savedInstanceState.getInt (“StringKeyForInteger”);
Var4 = savedInstanceState.getString (“StringKey”);
}
met behulp van deze manier kunt u alle staten en andere gegevens variabelen die verloren kunnen gaan op het scherm rotatie of wanneer de huidige activiteit gaat in de achtergrond op te slaan. Opslaan en herstellen Staten van UI is een goede praktijk in android app ontwikkeling.
Noot: Wanneer een activiteit voor de eerste keer wordt gemaakt, zullen er geen gegevens in de Save instantie state bundel.
bekijk deze handleiding als u van plan bent een app te starten.