Może ktoś mi pomóc wiedzieć o Bundle savedInstanceState
w onCreate(Bundle savedInstanceState)
Jestem newbie w Androidzie. Próbuję to zrozumieć z developer.android.com. Ale nie jestem w stanie tego zrozumieć. Czy ktoś może to uprościć?
Może ktoś mi pomóc wiedzieć o Bundle savedInstanceState
w onCreate(Bundle savedInstanceState)
Jestem newbie w Androidzie. Próbuję to zrozumieć z developer.android.com. Ale nie jestem w stanie tego zrozumieć. Czy ktoś może to uprościć?
Odpowiedzi:
Jeśli zapiszesz stan aplikacji w pakiecie (zwykle nietrwałe, dynamiczne dane w onSaveInstanceState
), można go przekazać z powrotem, onCreate
jeśli działanie musi zostać odtworzone (np. Zmiana orientacji), aby nie utracić tego wcześniej Informacja. Jeśli nie podano żadnych danych, savedInstanceState
ma wartość null.
... powinieneś użyć metody onPause (), aby zapisać wszelkie trwałe dane (takie jak zmiany użytkownika) do pamięci. Ponadto metoda onSaveInstanceState (Bundle) jest wywoływana przed umieszczeniem aktywności w takim stanie tła, co pozwala na zapisanie dowolnego stanu dynamicznej instancji w danej aktywności w danym pakiecie, aby później został odebrany w onCreate (Bundle), jeśli aktywność musi zostać odtworzony. Zobacz sekcję Cykl życia procesu, aby uzyskać więcej informacji o tym, jak cykl życia procesu jest powiązany z działaniami, które obsługuje. Zauważ, że ważne jest, aby zapisywać trwałe dane w onPause () zamiast onSaveInstanceState (Bundle), ponieważ ta ostatnia nie jest częścią wywołań zwrotnych cyklu życia, więc nie będzie wywoływana w każdej sytuacji, jak opisano w dokumentacji.
onCreate(Bundle savedInstanceState)
otrzymasz Bundle
wartość null, gdy aktywność zostanie rozpoczęta po raz pierwszy i będzie używana, gdy orientacja aktywności zostanie zmieniona .......
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android zapewnia inny elegancki sposób osiągnięcia tego. Aby to osiągnąć, musimy zastąpić metodę o nazwie onSaveInstanceState()
. Platforma Android umożliwia użytkownikom zapisywanie stanu dowolnej instancji. Stan instancji można zapisać w paczce. Pakiet jest przekazywany jako argument do metody onSaveInstanceState.
możemy załadować stan zapisanej instancji z pakietu przekazanego jako argument do onCreate
metody. Możemy również wczytać stan zapisanej instancji w onRestoreInstanceState
metodzie. Ale zostawię to czytelnikom, aby zrozumieli.
savedInstanceState
nie będzie, null
jeśli onSavedInstanceState()
został wcześniej wywołany. zmiany orientacji to tylko jeden przykład, w którym może to nastąpić.
Bundle
argument, że onCreate(Bundle)
będzie non- null
if i tylko wtedy, gdy wcześniej została wywołana Activity
jego onSaveInstanceState
metoda. Dzieje się tak podczas zmian orientacji ... a także dzieje się, gdy aktywność powraca po jej zabiciu przez system operacyjny i gdy wywołujesz jakąkolwiek inną zmianę konfiguracji na urządzeniu.
Jak odpowiedział Dhruv Gairola, możesz zapisać stan aplikacji, korzystając z opcji Pakiet zapisanyInstanceState. Staram się podać bardzo prosty przykład, który nowi uczniowie, tacy jak ja, mogą z łatwością zrozumieć.
Załóżmy, że masz prosty fragment z TextView i Button. Po każdym kliknięciu przycisku tekst się zmienia. Teraz zmień orientację swojego urządzenia / emulatora i zwróć uwagę, że utraciłeś dane (oznacza to zmienione dane po kliknięciu, które otrzymałeś), a fragment zaczyna się ponownie za pierwszym razem. Korzystając z Bundle SavedInstanceState możemy się tego pozbyć. Jeśli spojrzysz na cykl życia fragmentu. Fragment Lifecylce Otrzymasz , że metoda „onSaveInstanceState” jest wywoływana, gdy fragment ma zostać zniszczony.
Więc możemy zapisać stan, który oznacza zmienioną wartość tekstową w tym pakiecie w ten sposób
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Po dokonaniu orientacji metoda „onCreate” zostanie wywołana, prawda? więc możemy to zrobić
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Teraz po orientacji nie stracisz na wartości. Zmieniona wartość będzie zawsze wyświetlana.
Funkcja onCreate (pakiet zapisanyInstanceState) w systemie Android:
1) Gdy działanie zostało po raz pierwszy wywołane lub uruchomione, metoda onCreate (Bundle saveInstanceState) jest odpowiedzialna za utworzenie działania.
2) Kiedy kiedykolwiek orientacja (tj. Z poziomej na pionową lub pionową na poziomą) aktywności zostanie zmieniona lub gdy działanie zostanie wymuszone przez dowolny system operacyjny, wtedy saveInstanceState, czyli obiekt klasy pakietu zapisze stan działania.
3) Po zmianie orientacji onCreate (Bundle allowedInstanceState) wywoła i odtworzy działanie oraz załaduje wszystkie dane z saveInstanceState.
4) Zasadniczo klasa Bundle służy do przechowywania danych o aktywności, gdy powyższy warunek wystąpi w aplikacji.
5) onCreate () nie jest wymagany dla aplikacji. Ale powodem, dla którego jest używana w aplikacji, jest to, że ta metoda jest najlepszym miejscem do umieszczenia kodu inicjującego.
6) Możesz również umieścić swój kod inicjalizacyjny w onStart () lub onResume (), a kiedy aplikacja zostanie załadowana jako pierwsza, będzie działać tak samo jak w onCreate ().
onCreate(Bundle)
jest wywoływana, gdy czynność jest uruchamiana po raz pierwszy. Możesz go użyć do wykonania jednorazowej inicjalizacji, takiej jak utworzenie interfejsu użytkownika. onCreate()
przyjmuje jeden parametr, który ma wartość null lub niektóre informacje o stanie wcześniej zapisane przez onSaveInstanceState
.
onCreate (pakiet zapisanyInstanceState) zostanie wywołany, a parametr saveInstanceState będzie różny od zera, jeśli Twoja aktywność została zakończona w scenariuszu (widok wizualny) opisanym powyżej. Twoja aplikacja może następnie pobrać (przechwycić) dane z saveInstanceState i ponownie wygenerować Twoją aktywność