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()?
Odpowiedzi:
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... }
źródło
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.źródło
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 lubonResume()
zostanie wezwany.Edycja: Zapomniałem o tym
onStop()
, wcześniej dzwonionoonDestroy()
.Wykonaj ćwiczenie, o którym wspomniałem, a lepiej zrozumiesz.
źródło
Większość poprzednich odpowiedzi dobrze wyjaśnia, jak, dlaczego i kiedy używać,
onResume()
ale chciałbym dodać coś na temat ponownego tworzenia plikuActivity
.Odpowiedź brzmi:
onCreate()
Jednak decydując się na jego odtworzenie, należy zadać sobie pytanie, ile zActivity
potrzeb należy odtworzyć. Jeśli są to dane w adapterze, powiedzmy na liście, możesz zadzwonićnotifyDataChanged()
do,adapter
aby ponownie wypełnićadapter
i nie musisz przerysowywać wszystkiego.Ponadto, jeśli potrzebujesz tylko zaktualizować niektóre,
views
ale nie wszystkie, bardziej wydajne może być wywołanieinvalidate()
tych,view
które wymagają aktualizacji. Spowoduje to tylko ichviews
ponowne narysowanie i prawdopodobnie umożliwi płynniejsze działanie aplikacji. Mam nadzieję, że to ci pomoże.źródło
onResume()
jest jedną z metod wywoływanych w całym cyklu życia działania .onResume()
jest odpowiednikiemonPause()
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()
ionResume()
. Aktywność jest naprawdę „wznawiana” tylkoonRestart()
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ń zonStop()
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 }
źródło
Ponownie przejrzyj informacje o cyklu życia działań w Androidzie. Jest tam ładny obrazek oraz tabela pokazująca wywoływane metody. odniesienie Link google
https://developer.android.com/reference/android/app/Activity.html
źródło
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 }
źródło
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.
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 ()
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 ()
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.
źródło