Lagre Og Gjenopprett Forekomst Tilstand Gjort Enkelt!

som en nybegynner som lager enkle apper, kan du legge merke til under testing at skjermrotasjon tilbakestiller alle data som er samlet inn fra brukeren. Skjermrotasjon er en av Mange livssyklusendringer I Android som kan ødelegge Og gjenskape Aktiviteten og føre til at alle data går tapt! Ikke en god brukeropplevelse.

hvis du vil klargjøre appen for disse endringene I Aktivitetens Livssyklus, er det to metoder Du kan legge Til I Hovedaktiviteten for å lagre og gjenopprette dataene:

  1. onSaveInstanceState()
  2. onRestoreInstanceState()

onSaveInstanceState () – metoden lar deg legge til nøkkel / verdipar til outState av appen. Da vil onRestoreInstanceState () – metoden tillate deg å hente verdien og sette den tilbake til variabelen som den opprinnelig ble samlet inn fra.

for å forberede appen din til å bruke disse, er det viktig å opprette instansvariabler for alle dataene som må bevares når tilstanden til appen fører Til At Aktiviteten blir ødelagt. Disse variablene er utenfor noen metoder og tilgjengelige fra hvor som helst i klassen.

du vil også identifisere visningene som viser disse dataene til brukeren, og angi at du vil at dataene skal fortsette å vises her når Aktiviteten gjenopprettes med attributtet:

android:freezesText="true"

onSaveInstanceState ():

denne metoden kalles før onStop () i eldre versjoner Av Android og kan kalles etter onStop () for nyere versjoner.

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

la oss bryte denne metoden ned:

  1. overstyringen på linje en, indikerer at du skal overstyre standarddeklarasjonen for metoden.
  2. metodesignaturen på linje to begynner med tilgangsmodifikatoren «beskyttet», dette indikerer at metoden bare kan nås i selve klassen, pakken eller en underklasse. Returtypen for denne metoden er «ugyldig» da den ikke vil returnere noen data. Parameteren denne metoden tar inn er Et Buntetypeobjekt kalt outState.
  3. Siden vi overstyrer denne standardmetoden, må vi bruke super (på linje tre) for å lagre alle standard outState data.
  4. på linje fire kan du begynne å lagre dine egne data. onSavedInstanceState () kalles ved hjelp av punktnotasjon på outState av appen. Det første argumentet er En Streng og brukes som en nøkkel (ligner på å sette en variabel) for å få tilgang til verdien du lagrer i det andre argumentet. Her har vi gitt en forekomstvariabel som lagrer en heltallsverdi. Merknad linje fem er svært lik med unntak av at en variabel Av Strengtypen blir lagret i outState.

onRestoreInstanceState ():

denne metoden kalles etter onStart().

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

la oss bryte denne metoden ned:

  1. overstyringen på linje en, indikerer at du skal overstyre standarddeklarasjonen for metoden.
  2. metodesignaturen på linje to begynner med tilgangsmodifikatoren «beskyttet» dette indikerer at metoden bare kan nås i selve klassen, pakken eller en underklasse. Returtypen for denne metoden er «ugyldig» da den ikke vil returnere noen data. Parameteren denne metoden tar i Er En Bunt type objekt kalt savedInstanceState.
  3. Siden vi overstyrer denne standardmetoden, må vi bruke super, på linje tre, for å gjenopprette alle standard savedInstanceState data.
  4. Siden du lagret relevante appdata i instansvariabler, setter du dataene du lagret i outState tilbake til variabelen ved å ringe en get-metode på savedInstanceState ved hjelp av punktnotasjon og gi Strengnøkkelen som brukes til å lagre dataene som argument.

jeg håper denne forklaringen hjelper deg med å bedre forstå disse metodene og hvordan du bruker dem. Du finner Mer informasjon i Aktivitetsdokumentasjonen For Android.

Glad Koding!