2013-04-17 6 views
6

Po otwarciu działania wiem, że mogę zainicjować rzeczy w funkcji onCreate.onCreate vs. onResume/onRestart bevhaviour odnośnie zmiennych składowych

Ale jakie jest zachowanie funkcji OnResume i onRestart? Kiedy są wywoływane te funkcje?

W szczególności: Inicjuję lokalną zmienną składową w funkcji onCreate, odwołując się do obiektu globalnego. Teraz, gdy użytkownik jest przerywany, na przykład przez połączenie, działanie może zostać zamknięte. Później, kiedy użytkownik wróci do mojego widoku, jaki jest status już zainicjowanej zmiennej? Czy muszę ponownie zainicjować wszystko w funkcjach onResume/onRestart? Czym więc różni się funkcjonalność od metody onCreate?

Odpowiedz

6
  • onCreate: Działalność rozpoczęta po raz pierwszy. Tutaj możesz zainicjować swoje rzeczy.
  • onResume: Użytkownik powraca do działania po pojawieniu się nowej aktywności na pierwszym planie.()
  • onRestart: Użytkownik przechodzi do działania po tym, jak nie jest już widoczny (onStop).

Możesz zobaczyć pełny cykl życia na Activity documentation. Twoje dane dotyczące aktywności zostaną utracone tylko wtedy, gdy zostanie wywołana onDestroy, co ma miejsce, gdy skończysz, lub gdy zostanie ona zniszczona przez system (tj. Gdy aplikacje o wyższym priorytecie potrzebują pamięci)

+0

Tak więc onDestroy oznacza, że ​​aplikacja jest zabijana tak i na razie zostanie wywołany przy następnym uruchomieniu aplikacji, prawda? – Devolus

+1

Niekoniecznie "onDestroy" oznacza, że ​​'Activity' jest niszczone, tak jak po powrocie do poprzedniej aktywności za pomocą przycisku Wstecz, ale aplikacja jest nadal uruchomiona. Ale tak, gdy aplikacja zostanie zabita (lub "Activity" zostanie zniszczona), następnym razem, gdy ją otworzysz, 'onCreate' zostanie wywołany ponownie. – ssantos

+1

Należy zauważyć, że OnResume będzie również wywoływany zaraz po OnCreate, zgodnie ze schematem tutaj https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc –

1

Załóżmy, że dialog jest inicjowany z bieżącego działania, główne okno (Aktywność) przejdzie do stanu onPause. Gdy zmusisz aktywność, by była w tle (Przypuść, że naciśniesz przycisk home) Aktywność przejdzie do stanu OnPause.

Powiązane problemy