mentés és visszaállítás példány állam könnyen!

kezdőként egyszerű alkalmazásokat készíthet, a tesztelés során észreveheti, hogy a képernyő-forgatás visszaállítja a felhasználótól gyűjtött összes adatot. Képernyő forgatás egy a sok életciklus változások Android, amely képes elpusztítani, majd újra a tevékenység, ami az összes adat elvész! Nem túl jó felhasználói élmény.

az alkalmazás felkészítése a tevékenység életciklusának ezen módosításaira két módszert adhat a fő tevékenységhez az adatok mentéséhez és visszaállításához:

  1. onSaveInstanceState ()
  2. onRestoreInstanceState()

az onSaveInstanceState () módszer lehetővé teszi kulcs/érték párok hozzáadását az alkalmazás külső állapotához. Ezután az onRestoreInstanceState () metódus lehetővé teszi az érték lekérését, majd visszahelyezését arra a változóra, amelyből eredetileg összegyűjtötték.

ahhoz, hogy felkészítse az alkalmazást ezek használatára, fontos, hogy hozzon létre példányváltozókat az összes olyan adathoz, amelyet meg kell őrizni, amikor az alkalmazás állapota a tevékenység megsemmisítését okozza. Ezek a változók kívül esnek minden metóduson, és bárhonnan elérhetők az osztályban.

meg kell határoznia azokat a nézeteket is, amelyek ezeket az adatokat a felhasználó számára megjelenítik, és jeleznie kell, hogy az adatokat továbbra is itt szeretné megjeleníteni, amikor a tevékenység az attribútummal helyreáll:

android:freezesText="true"

onSaveInstanceState ():

ezt a módszert az Onstop() előtt hívják meg az Android régebbi verzióiban, az onstop () után pedig az újabb verziókban.

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

Lets break this method down:

  1. a felülbírálás az első sorban azt jelzi, hogy felül fogja írni a metódus alapértelmezett deklarációját.
  2. a módszer aláírása a második sorban a “védett” hozzáférési módosítóval kezdődik, ez azt jelzi, hogy a módszer csak magában az osztályban, a csomagban vagy egy alosztályban érhető el. Ennek a módszernek a visszatérési típusa “void”, mivel nem ad vissza adatokat. A metódus paramétere egy outState nevű köteg típusú objektum.
  3. mivel felülbíráljuk ezt az alapértelmezett módszert, a super-t (a harmadik sorban) kell használnunk az összes alapértelmezett outState adat tárolására.
  4. a negyedik sorban elkezdheti tárolni saját adatait. onSavedInstanceState () hívják a dot jelölés a outState az alkalmazás. Az első argumentum Bármely karakterlánc, amelyet kulcsként használnak (hasonlóan a változó beállításához) a második argumentumban tárolt érték eléréséhez. Itt megadtunk egy példányváltozót, amely egész értéket tárol. Az ötödik Megjegyzés nagyon hasonló, azzal a kivétellel, hogy a karakterlánc típusú változót az outState menti.

onRestoreInstanceState():

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

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

Lets break this method down:

  1. az első vonal felülbírálása azt jelzi, hogy felül fogja írni a módszer alapértelmezett deklarációját.
  2. a módszer aláírása a második sorban a “védett” hozzáférési módosítóval kezdődik ez azt jelzi, hogy a módszer csak magában az osztályban, a csomagban vagy egy alosztályban érhető el. Ennek a módszernek a visszatérési típusa “void”, mivel nem ad vissza adatokat. A metódus paramétere egy savedInstanceState nevű köteg típusú objektum.
  3. mivel felülbíráljuk ezt az alapértelmezett módszert, a harmadik sorban a super-t kell használnunk az összes alapértelmezett savedInstanceState adat visszaállításához.
  4. mivel a releváns alkalmazásadatokat példányváltozókban tárolta, az outState-ben mentett adatokat vissza kell állítania a változóra egy get metódus meghívásával a savedInstanceState-on pont jelöléssel, és meg kell adnia az adatok tárolására használt String kulcsot argumentumként.

remélem, hogy ez a magyarázat segít jobban megérteni ezeket a módszereket és azok használatát. További információért keresse fel az Android tevékenységi dokumentációját.

Boldog Kódolást!