Zapisywanie i przywracanie stanu interfejsu użytkownika aktywności jest ważną częścią doświadczenia użytkownika. W takich przypadkach Klient oczekuje, że stan UI będzie kontynuowany jak wcześniej, jednak framework zburzy działanie i każdy obecny w nim stan. Być może podczas testowania zauważyłeś, że obrót ekranu resetuje wszystkie informacje zebrane od klienta. Podobnie jest w przypadku, gdy użytkownik naciska przycisk Wstecz przez pomyłkę. Obrót ekranu jest jedną z licznych zmian w cyklu życia Androida, które mogą zniszczyć i zresetować aktywność i spowodować utratę wszystkich informacji. Zdecydowanie nie jest to niezwykłe doświadczenie użytkownika!
aby zapisać i przywrócić stan interfejsu użytkownika, nadpisuję do tego celu dwie najczęściej stosowane metody:
onSaveInstanceState ():
aby zapisać sates interfejsu użytkownika, nadpisuję onSaveInstanceState(Pakiet savedInstanceState) i zapisuję wszystkie dane interfejsu użytkownika w pakiecie savedInstanceState.
ta metoda jest wywoływana przed onStop() w starszych wersjach Androida (do Androida 8.0) i może być wywoływana po OnStop() w nowszych wersjach.
@Override
public void onSaveInstanceState (Bundle savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Zapisz zmiany stanu interfejsu użytkownika w savedInstanceState.
// ten pakiet zostanie przekazany do onCreate, jeśli Proces jest
/ / zabity i ponownie uruchomiony.
savedInstanceState.putBoolean („StringKeyForBoolean”, false);
savedInstanceState.putDouble („StringKeyForDouble”, 3.4);
savedInstanceState.putInt („StringKeyForInteger”, 5);
savedInstanceState.putString („StringKey”, „Folio3/blog”);
/ / itd.
}
Pakiet jest zasadniczo sposobem przechowywania mapy NVP („para nazwa-wartość”) i zostanie przekazany do onrestoreinstancestate (), gdzie następnie wyodrębnisz wartości takie jak ta:
ta metoda jest wywoływana po wywołaniu onStart().
@Override
public void onRestoreInstanceState (Bundle savedInstanceState) {
super.onSaveInstanceState (savedInstanceState);
// Przywróć stan interfejsu użytkownika za pomocą savedInstanceState.
Var1 = savedInstanceState.getBoolean („StringKeyForBoolean”, false);
Var2 = savedInstanceState.getDouble („StringKeyForDouble”);
Var3 = savedInstanceState.getInt („StringKeyForInteger”);
Var4 = savedInstanceState.getString („StringKey”);
}
w ten sposób można zapisać wszystkie stany i inne zmienne danych, które mogą zostać utracone podczas obracania ekranu lub gdy bieżąca aktywność przechodzi w tło. Zapisywanie i przywracanie Stanów interfejsu użytkownika jest dobrą praktyką w tworzeniu aplikacji na Androida.
notka: Gdy aktywność jest tworzona po raz pierwszy, nie będzie żadnych danych w pakiecie stanu instancji zapisu.
sprawdź ten przewodnik, jeśli planujesz uruchomić aplikację.