Jak używać onResume ()?


86

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

Ponadto, jeśli chcę ponownie uruchomić działanie pod koniec wykonywania innej, która metoda jest wykonywana - onCreate()czy onResume()?

A jeśli chcę zaktualizować dane, jak je wprowadzić onResume()?


onResume () jest wywoływana za każdym razem, gdy wracasz do działania z wywołania lub czegoś innego. Metodę onResume można zastąpić podobnie jak onCreate () i wykonać zadanie.
Jibяaᴎ Khaᴎ

Może to pomóc w lepszym zrozumieniu cyklu życia i aplikacji na Androida.
TronicZomB

2
Kolejność wywoływania tych metod została wyjaśniona w dokumentacji dla programistów
Michael

1
upewnij się, że wybrałeś odpowiedź. witamy w SO.
donfede

Odpowiedzi:


130

Każda czynność, która jest ponownie uruchamiana, ma najpierw wykonywaną metodę onResume () .

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

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

}

72

Ponowne uruchomienie aplikacji zadzwoni OnCreate().

Kontynuowanie aplikacji po jej wstrzymaniu spowoduje wywołanie OnResume(). Z oficjalnej dokumentacji pod adresem https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle tutaj znajduje się diagram cyklu życia działania.

cykl życia działania Androida, z https://developer.android.com/images/activity_lifecycle.png na https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


1
Użyj hiperłącza, aby podać linki.
Manoj Fegde

link czasami daje mi problem. nie wiem dlaczego
Viswanath Lekshmanan

2
Nie polecam ręcznego wywoływania żadnej z metod, które są częścią cyklu życia działania :), które mogą powodować wiele problemów.
Cata

1
@Cata, założyłem, że Viswanath miał na myśli, że metody zostaną wywołane, i odpowiednio zaktualizowałem odpowiedź.
Mathieu K.

28

Najlepszym sposobem na zrozumienie byłoby zastąpienie wszystkich metod cyklu życia w swojej aktywności i umieszczenie punktu przerwania (jeśli sprawdzasz w emulatorze) lub dziennika w każdej z nich. Dowiesz się, do którego z nich dzwonią i kiedy.

Tak jak spoiler, onCreate()zostaje wywołany jako pierwszy, a jeśli wstrzymałeś aktywność, przechodząc do ekranu głównego lub uruchamiając inną aktywność, onPause()zostaje wywołany. Jeśli w międzyczasie system operacyjny zniszczy aktywność, onDestroy()zostanie wezwany. Jeśli wznowisz aplikację, a aplikacja została już zniszczona, onCreate()zostaniesz wezwany lub onResume()zostanie wezwany.

Edycja: Zapomniałem o tym onStop(), wcześniej dzwoniono onDestroy().

Wykonaj ćwiczenie, o którym wspomniałem, a lepiej zrozumiesz.


1
Od jakiegoś czasu szukałem tak szczegółowego wyjaśnienia, które naprawdę pomogło mi stworzyć idealny cykl aktywności w aplikacji. Dziękuję Ci.
Keno Clayton

zapomniałeś o Start ()
Dory Daniel

9

Większość poprzednich odpowiedzi dobrze wyjaśnia, jak, dlaczego i kiedy używać, onResume()ale chciałbym dodać coś na temat ponownego tworzenia pliku Activity.

Chcę wiedzieć, czy chcę ponownie uruchomić działanie pod koniec wykonywania innej metody, która jest wykonywana onCreate () lub onResume ()

Odpowiedź brzmi: onCreate()Jednak decydując się na jego odtworzenie, należy zadać sobie pytanie, ile z Activitypotrzeb należy odtworzyć. Jeśli są to dane w adapterze, powiedzmy na liście, możesz zadzwonić notifyDataChanged()do, adapteraby ponownie wypełnić adapteri nie musisz przerysowywać wszystkiego.

Ponadto, jeśli potrzebujesz tylko zaktualizować niektóre, viewsale nie wszystkie, bardziej wydajne może być wywołanie invalidate()tych, viewktóre wymagają aktualizacji. Spowoduje to tylko ich viewsponowne narysowanie i prawdopodobnie umożliwi płynniejsze działanie aplikacji. Mam nadzieję, że to ci pomoże.


5

onResume()jest jedną z metod wywoływanych w całym cyklu życia działania . onResume()jest odpowiednikiem onPause()wywoływanym za każdym razem, gdy działanie jest ukryte, np. jeśli rozpoczynasz nowe działanie, które je ukrywa. onResume()jest wywoływana, gdy aktywność, która została ukryta, wraca do widoku na ekranie.

Twoje pytanie dotyczy metody stosowanej do ponownego uruchomienia działania. onCreate()jest wywoływana, gdy działanie jest tworzone po raz pierwszy. W praktyce większość działań pozostaje w tle poprzez serię połączeń onPause()i onResume(). Aktywność jest naprawdę „wznawiana” tylko onRestart()wtedy, gdy najpierw zostanie całkowicie zatrzymana przez wywołanie, onStop()a następnie przywrócona do życia. Tak więc, jeśli w rzeczywistości nie przerywasz działań z onStop()nim, najprawdopodobniej będziesz go używać onResume().

Przeczytaj dokument dotyczący Androida w powyższym linku, aby lepiej zrozumieć związek między różnymi metodami stylu życia. Niezależnie od tego, która metoda cyklu życia zakończy się przy użyciu ogólnego formatu, jest taka sama. Musisz nadpisać standardową metodę i dołączyć swój kod, tj. To, co chcesz, aby aktywność wykonywała w tym momencie, w skomentowanej sekcji.

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

Czy onResume () jest wywoływana, gdy klikamy element w widoku?
rajiv_

1
Kliknięcie elementu niekoniecznie wywołuje wznowienie. Metoda onResume zostanie wywołana, jeśli ten widok zostanie ukryty i przywrócony lub podczas początkowego ładowania, zanim zostanie w pełni utworzony.
Rarw

show error nie wywołało super.onResume ()
sirmagid


2

KOTLIN

Każda czynność, która jest ponownie uruchamiana, ma najpierw wykonywaną metodę onResume ().

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

override fun onResume() {
        super.onResume()
        // your code here
    }

1

Po rozpoczęciu działania, ponowne uruchomienie (onRestart () następuje przed wywołaniem onStart ()) lub wstrzymanie (onPause ()), onResume (). Gdy działanie jest w stanie onResume (), działanie jest gotowe do użycia przez użytkownika aplikacji.

Przestudiowałem trochę cykl życia działania i oto moje rozumienie tego tematu: Jeśli chcesz ponownie uruchomić czynność (A) pod koniec wykonywania innej, może być kilka różnych przypadków.

  1. Inna czynność (B) została wstrzymana i / lub zatrzymana lub zniszczona, a czynność A prawdopodobnie została wstrzymana (onPause ()), w tym przypadku działanie A wywoła metodę onResume ()

  2. Czynność B została wstrzymana i / lub zatrzymana lub zniszczona, czynność A prawdopodobnie została zatrzymana (onStop ()) ze względu na pamięć, w tym przypadku działanie A wywoła najpierw onRestart (), następnie onStart () sekundę, a następnie onResume ()

  3. Działanie B zostało wstrzymane i / lub zatrzymane lub zniszczone, działanie A zostało zniszczone, programista może ręcznie wywołać onStart (), aby najpierw uruchomić działanie, a następnie onResume (), ponieważ gdy działanie jest w stanie zniszczenia, działanie ma nie rozpoczęto, a dzieje się to przed całkowitym usunięciem aktywności. Jeśli działanie zostanie usunięte, należy je utworzyć ponownie. Ręczne wywoływanie metody onStart () Myślę, że dzieje się tak dlatego, że jeśli aktywność nie została uruchomiona i została utworzona, po onCreate () zostanie wywołana metoda onStart ().

Jeśli chcesz zaktualizować dane, utwórz funkcję aktualizacji danych i umieść ją wewnątrz onResume (). Lub umieść funkcję loadData wewnątrz onResume ()

Cykl życia lepiej zrozumieć za pomocą diagramu cyklu życia działania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.