Hogyan lehet menteni egy Android tevékenységi állapotot a mentési Példányállapot használatával?

a felhasználói élmény fontos része a tevékenység felhasználói felületének mentése és visszaállítása. Ilyen esetekben az ügyfél elvárja, hogy a felhasználói felület állapota a korábbiakhoz hasonlóan folytatódjon, azonban a keretrendszer lebontja a műveletet és a benne lévő állapotokat. Lehet, hogy a tesztelés során látta, hogy a képernyő elforgatása visszaállítja az ügyféltől összegyűjtött összes információt. Ugyanez a helyzet, ha a felhasználó véletlenül megnyomja a Vissza gombot. A képernyő forgatása az Android számos életciklus-változásának egyike, amely elpusztíthatja és visszaállíthatja a tevékenységet, és minden információ elveszhet. Határozottan nem rendkívüli felhasználói élmény!

a felhasználói felület állapotának mentése és visszaállítása érdekében felülbírálom a két leggyakoribb módszert erre a célra:

Alt Text

onSaveInstanceState():

annak érdekében, hogy mentse sates UI, felülbírálom onSaveInstanceState(Bundle savedInstanceState), és mentse az összes adatot a UI savedInstanceState Bundle.

ezt a módszert az Onstop() előtt hívják meg az Android régebbi verzióiban (android 8.0-ig), és az onstop () után hívható meg az újabb verzióknál.

@Override
nyilvános érvénytelen onSaveInstanceState(köteg savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
/ / a felhasználói felület állapotának mentése a savedInstanceState – ra.
/ / ez a csomag akkor kerül átadásra az onCreate-nek, ha a folyamat
// leáll és újraindul.
savedInstanceState.putBoolean (“StringKeyForBoolean”, hamis);
savedInstanceState.putDouble (“StringKeyForDouble”, 3.4);
savedInstanceState.putInt (“StringKeyForInteger”, 5);
savedInstanceState.putString (“StringKey”, “Folio3/blog”);
// stb.
}

a csomag lényegében egy NVP (“Name-Value Pair”) térkép tárolásának módja, és átkerül az onRestoreInstanceState () – be, ahol aztán kibontja az ilyen értékeket:

Alt szöveg

ezt a módszert az onStart () után hívják meg.

@Override
nyilvános érvénytelenség a restoreinstancestate-on(Csomag savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// a felhasználói felület állapotának visszaállítása a savedInstanceState használatával.

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

}

ezzel mentheti az összes olyan állapotot és egyéb adatváltozót, amely elveszhet a képernyő elforgatásakor vagy amikor az aktuális tevékenység a háttérbe kerül. A felhasználói felület állapotának mentése és helyreállítása jó gyakorlat az android alkalmazásfejlesztésben.
Megjegyzés: Amikor egy tevékenység első alkalommal jön létre, nem lesznek adatok a példánymentési állapotcsomagban.

nézze meg ezt az útmutatót, ha egy alkalmazás elindítását tervezi.



+