Uložit a obnovit stav Instance snadné!
jako začátečník dělat jednoduché aplikace, můžete si všimnout, během testování, že rotace obrazovky resetuje všechna data shromážděná od uživatele. Rotace obrazovky je jednou z mnoha změn životního cyklu v Androidu, které mohou zničit a znovu vytvořit aktivitu a způsobit ztrátu všech dat! Není to skvělý uživatelský zážitek.
Chcete-li připravit aplikaci na tyto změny životního cyklu aktivity, existují dvě metody, které můžete přidat do MainActivity pro uložení a obnovení dat:
- onSaveInstanceState()
- onRestoreInstanceState()
V onSaveInstanceState() metoda umožňuje přidat klíč/hodnota páry na outState aplikace. Poté Vám metoda onRestoreInstanceState() umožní načíst hodnotu a nastavit ji zpět na proměnnou, ze které byla původně shromážděna.
připravit své aplikace používat tyto, je důležité vytvořit proměnné instance pro všechna data, která budou muset být zachovány při stavu aplikace způsobí, že Činnost, která má být zničena. Tyto proměnné jsou mimo jakékoli metody a jsou přístupné odkudkoli ve třídě.
Budete také chtít identifikovat názory, že tato data zobrazit uživateli, a naznačují, že chcete data i nadále být zobrazeny, když je Činnost obnovena s atributem:
android:freezesText="true"
onSaveInstanceState():
Tato metoda je volána před onStop() ve starších verzích Android a může být nazýván po onStop() pro novější verze.
1 @Override
2 protected void onSaveInstanceState(Bundle outState) {
3 super.onSaveInstanceState(outState);
4 outState.putInt("AStringKey", variableData);
5 outState.putString("AStringKey2", variableData2);
6 }
umožňuje tuto metodu rozdělit:
- přepsání na řádku jedna znamená, že přepsáte výchozí deklaraci metody.
- podpis metody na řádku dva začíná modifikátorem přístupu „chráněno“, což znamená, že k metodě lze přistupovat pouze v rámci samotné třídy, balíčku nebo podtřídy. Typ návratu pro tuto metodu je „neplatný“, protože nevrátí žádná data. Parametr, který tato metoda přijímá, je objekt typu svazku s názvem outState.
- protože přepisujeme tuto výchozí metodu, musíme použít super (na řádku tři) k uložení všech výchozích outState dat.
- na řádku čtyři můžete začít ukládat vlastní data. onSavedInstanceState () se nazývá pomocí bodové notace na outState aplikace. První argument je libovolný řetězec a používá se jako klíč (podobně jako nastavení proměnné) pro přístup k hodnotě, kterou uložíte ve druhém argumentu. Zde jsme poskytli proměnnou instance, která ukládá celočíselnou hodnotu. Řádek oznámení pět je velmi podobný s tou výjimkou, že proměnná typu řetězce je uložena v outState.
onRestoreInstanceState ():
tato metoda se nazývá po onStart ().
1 @Override
2 protected void onRestoreInstanceState(Bundle savedInstanceState){
3 super.onRestoreInstanceState(savedInstanceState);
4 variableData = savedInstanceState.getInt("AStringKey");
5 variableData2 = savedInstanceState.getString("AStringKey2");
6 }
Umožňuje přerušit tato metoda dolů:
- přepsat na lince jedna, znamená, že se chystáte přepsat výchozí deklaraci metody.
- podpis metody na řádku dva začíná modifikátorem přístupu „chráněno“ to znamená, že metoda je přístupná pouze v rámci samotné třídy, balíčku nebo podtřídy. Typ návratu pro tuto metodu je „neplatný“, protože nevrátí žádná data. Parametr, který tato metoda přijímá, je objekt typu svazku s názvem savedInstanceState.
- protože přepisujeme tuto výchozí metodu, musíme použít super, na řádku tři, k obnovení všech výchozích dat savedInstanceState.
- Od doby, co jste uloženy své příslušné aplikace data v proměnné instance, můžete nastavit údaje, které jste uložené v outState zpět na proměnnou voláním metody get na savedInstanceState pomocí tečkové notace a poskytnout String key slouží k ukládání dat jako argument.
doufám, že toto vysvětlení vám pomůže lépe porozumět těmto metodám a jak je používat. Další informace naleznete v dokumentaci k činnosti pro Android.
Šťastné Kódování!