Salvați și restaurați starea instanței ușor de făcut!

în calitate de începător care face aplicații simple, este posibil să observați în timpul testării că rotația ecranului resetează toate datele colectate de la utilizator. Rotația ecranului este una dintre numeroasele schimbări ale ciclului de viață din Android care pot distruge și recrea activitatea și pot duce la pierderea tuturor datelor! Nu este o experiență de utilizator mare.

pentru a vă pregăti aplicația pentru aceste modificări ale ciclului de viață al activității, există două metode pe care le puteți adăuga la MainActivity pentru a salva și restaura datele:

  1. onSaveInstanceState()
  2. onRestoreInstanceState()

metoda onSaveInstanceState () vă permite să adăugați perechi cheie/valoare la starea exterioară a aplicației. Apoi, metoda onRestoreInstanceState () vă va permite să recuperați valoarea și să o setați înapoi la variabila din care a fost colectată inițial.

pentru a vă pregăti aplicația pentru a le utiliza, este important să creați variabile de instanță pentru toate datele care vor trebui păstrate atunci când starea aplicației determină distrugerea activității. Aceste variabile sunt în afara oricărei metode și accesibile de oriunde din clasă.

de asemenea, veți dori să identificați vizualizările care afișează aceste date utilizatorului și să indicați că doriți ca datele să fie afișate în continuare aici când activitatea este restabilită cu atributul:

android:freezesText="true"

onSaveInstanceState ():

această metodă este apelată înainte de onStop () în versiunile mai vechi de Android și poate fi apelată după onStop () pentru versiunile mai noi.

 1 @Override
2 protected void onSaveInstanceState(Bundle outState) {
3 super.onSaveInstanceState(outState);
4 outState.putInt("AStringKey", variableData);
5 outState.putString("AStringKey2", variableData2);
6 }

vă permite să rupă această metodă în jos:

  1. override on line one, indică faptul că aveți de gând să suprascrie declarația implicită a metodei.
  2. semnătura metodei pe linia doi începe cu modificatorul de acces „protejat”, ceea ce indică faptul că metoda poate fi accesată numai în cadrul clasei în sine, al pachetului sau al unei subclase. Tipul de returnare pentru această metodă este „void”, deoarece nu va returna date. Parametrul pe care îl ia această metodă este un obiect de tip pachet numit outState.
  3. deoarece suprascriem această metodă implicită, trebuie să folosim super (on line three) pentru a stoca toate datele implicite outState.
  4. pe linia patru, puteți începe să stocați propriile date. onSavedInstanceState () se numește folosind notație punct pe outState a aplicației. Primul argument este orice șir și este folosit ca cheie (similar cu setarea unei variabile) pentru a accesa valoarea pe care o stocați în al doilea argument. Aici am furnizat o variabilă de instanță care stochează o valoare întreagă. Notă linia cinci este foarte asemănătoare, cu excepția faptului că o variabilă de tip șir este salvată în outState.

onRestoreInstanceState ():

această metodă se numește după onStart().

 1 @Override
2 protected void onRestoreInstanceState(Bundle savedInstanceState){
3 super.onRestoreInstanceState(savedInstanceState);
4 variableData = savedInstanceState.getInt("AStringKey");
5 variableData2 = savedInstanceState.getString("AStringKey2");
6 }

vă permite să rupă această metodă în jos:

  1. override on line one, indică faptul că aveți de gând să suprascrie declarația implicită a metodei.
  2. semnătura metodei pe linia doi începe cu modificatorul de acces „protejat” aceasta indică faptul că metoda poate fi accesată numai în cadrul clasei în sine, al pachetului sau al unei subclase. Tipul de returnare pentru această metodă este „void”, deoarece nu va returna date. Parametrul pe care îl ia această metodă este un obiect de tip Bundle numit savedInstanceState.
  3. deoarece suprascriem această metodă implicită, trebuie să folosim super, pe linia trei, pentru a restabili toate datele implicite savedInstanceState.
  4. deoarece ați stocat datele relevante ale aplicației în variabile de instanță, setați datele pe care le-ați salvat în outState înapoi la variabilă apelând o metodă get pe savedInstanceState folosind notația dot și furnizați cheia șir utilizată pentru a stoca datele ca argument.

sper că această explicație vă ajută să înțelegeți mai bine aceste metode și cum să le utilizați. Pentru mai multe informații vizitați documentația de activitate pentru Android.

Codificare Fericită!