2013-03-27 27 views
45

Czy ktoś może dać mi przykład, który używa onResume() w systemie Android?Jak korzystać z onResume()?

Ponadto, jeśli chcę ponownie uruchomić działanie na końcu wykonywania innej, która metoda jest wykonywana - onCreate() lub onResume()?

A jeśli chcę zaktualizować dane, jak mogę umieścić go w onResume()?

+0

Funkcja onResume() jest wywoływana za każdym razem, gdy wracasz do działania z połączenia lub czegoś innego. Możesz zastąpić metodę onResume podobnie jak onCreate() i wykonać zadanie. –

+0

[This] (http://www.herongyang.com/Android/Activity-onCreate-and-Callback-Methods.html) może pomóc ci lepiej zrozumieć cykl życia aplikacji i Androida. – TronicZomB

+2

Sekwencję, w której wywoływane są te metody, wyjaśniono w dokumentacji dla programistów Androida: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Michael

Odpowiedz

39

Ponowne uruchomienie aplikacji wezwie OnCreate().

Kontynuowanie aplikacji w trybie pauzy zadzwoni pod numer OnResume(). Od oficjalnych dokumentów na https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle tutaj jest schemat cyklu życia aktywności.

the Android activity lifecycle, from https://developer.android.com/images/activity_lifecycle.png on https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+1

Użyj hiperłącza, aby podać linki. –

+0

link daje mi czasami problem. Nie wiem, dlaczego –

+2

Nie polecam ręcznie wywoływać żadnej z metod, które są częścią cyklu życia Activity :), które mogą powodować wiele problemów. – Cata

76

Każdy aktywny restartujący ma swój onResume() sposób wykonany jako pierwszy.

Aby skorzystać z tej metody, wykonaj następujące czynności:

@Override 
public void onResume(){ 
    super.onResume(); 
    // put your code here... 

} 
3

onResume() jest jedną z metod zwanych całym activity lifecycle. onResume() to odpowiednik onPause(), który jest wywoływany za każdym razem, gdy działanie jest ukryte, np. jeśli zaczniesz nową aktywność, która ją ukrywa. onResume() jest wywoływane, gdy ukryta aktywność powraca, aby wyświetlić ją na ekranie.

Twoje pytanie brzmi: jaka metoda jest używana do ponownego uruchomienia działania. onCreate() jest wywoływane, gdy aktywność jest tworzona po raz pierwszy. W praktyce większość działań utrzymuje się w tle za pośrednictwem serii wywołań onPause() i onResume(). Aktywność jest naprawdę "restartowana" tylko przez onRestart(), jeśli jest najpierw całkowicie zatrzymana przez wywołanie onStop(), a następnie przywrócona do życia. Tak więc, jeśli faktycznie nie zatrzymujesz działań pod numerem onStop(), najprawdopodobniej użyjesz onResume().

Przeczytaj dokumentację dla Androida w powyższym łączu, aby lepiej zrozumieć związek między różnymi metodami stylu życia. Bez względu na to, która metoda cyklu życia kończy się na używaniu ogólnego formatu, jest taka sama. Musisz zastąpić standardową metodę i dołączyć swój kod, czyli to, co chcesz zrobić w tym momencie w sekcji z komentarzami.

@Override 
public void onResume(){ 
//will be executed onResume 
} 
+0

Czy funkcja onResume() została wywołana po kliknięciu elementu w widoku? –

+1

Kliknięcie elementu niekoniecznie wywołuje onResume. Metoda onResume zostanie wywołana, jeśli widok ten jest albo ukryty i przywrócony, albo po początkowym załadowaniu, zanim zostanie w pełni utworzony. – Rarw

23

Najlepszym sposobem, aby zrozumieć byłoby mieć wszystkie metody Lifecycle zmienione w swojej działalności i umieszczenie punktu przerwania (jeśli sprawdzeniu w emulatorze) lub dziennik w każdym z nich. Dowiesz się, do którego zostaniesz wezwany, kiedy.

Tak jak spoiler, onCreate() zostaje wywołany jako pierwszy, a następnie, jeśli zatrzymałeś działanie, przechodząc na ekran główny lub uruchamiając inną aktywność, zostaje wywołana onPause(). Jeśli OS zniszczy aktywność w międzyczasie, zostanie wywołana onDestroy(). Jeśli wznowisz aplikację, a aplikacja zostanie już zniszczona, zostanie wywołana onCreate() lub zostanie wywołana onResume().

Edytuj: Zapomniałem o onStop(), zostaje on wywołany przed onDestroy().

Wykonaj ćwiczenie, o którym wspomniałem, a uzyskasz lepsze zrozumienie.

+1

Szukałem tak szczegółowego wyjaśnienia przez jakiś czas, to naprawdę pomogło mi stworzyć idealny cykl aktywności aplikacji. Dziękuję Ci. –

+0

Nie ma za co :-) – noob

+1

świetne wyjaśnienie! +1 – powernit

7

Większość poprzednich odpowiedzi dobrze ilustruje sposób, dlaczego i kiedy należy korzystać z onResume(), ale chciałbym dodać coś na temat ponownego utworzenia Twojego Activity.

Chcę wiedzieć, czy chcę, aby ponownie uruchomić działalność pod koniec exectuion z Innym jaka metoda jest wykonywana onCreate() lub onResume()

Odpowiedź jest onCreate() Jednak przy podejmowaniu decyzji aby go odtworzyć, należy zadać sobie pytanie, jak wiele z Activity trzeba ponownie utworzyć. Jeśli są to dane w adapterze, powiedzmy o liście, możesz zadzwonić pod numer notifyDataChanged() na adapter, aby ponownie zaludnić adapter i nie trzeba przerysowywać wszystkiego.

Ponadto, jeśli wystarczy zaktualizować niektóre views, ale nie wszystkie, może być bardziej skuteczne wywoływanie invalidate() na view (s), które wymagają aktualizacji. Spowoduje to tylko odświeżenie tych views i możliwe, że aplikacja będzie działać płynniej. Mam nadzieję, że to może ci pomóc.

+0

dziękuję. Spróbuję użyć notifyDataChanged() – Zizou

+0

Nie ma za co. Cieszę się, że mogłem pomóc. – codeMagic