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:
- onSaveInstanceState ()
- 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:
- 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.
- 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.
- 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.
- 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:
- az első vonal felülbírálása azt jelzi, hogy felül fogja írni a módszer alapértelmezett deklarációját.
- 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.
- 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.
- 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!