Jak więc zakończyć działanie wywoływane przez StartAvtivityforResults () bez zakończenia?
Ayush Pateria
@CommonsWare Jak możemy zapewnić, że onStop jest zawsze wywoływany? W mojej aplikacji OnStop i onDestroy nie są wywoływane w niektórych przypadkach iw takich przypadkach działanie podrzędne zajmuje zbyt dużo czasu na zakończenie i wygląda na to, że aplikacja zawiesiła się ... Podczas gdy gdy nazywa się onStop, wszystko działa normalnie. Jestem na Galaxy y z Androidem 2.3.6 ... zobacz moje pytanie na stackoverflow.com/questions/13928591/ ... plz help !!!
Amit
@CommonsWare Przetestowałem, panie, bardzo prawdziwe. + 1 dla ciebie Ale chcę zadać jedno pytanie, które napisałem finish () jako pierwszą instrukcję w mojej funkcji, a następnie wykonuje całą funkcję, a następnie finish () nazywa się Jak to zarządzono.
Nikhil Agrawal
@NikhilAgrawal, możesz mieć funkcję powrotu zaraz po wywołaniu metody finish ().
antonio081014
Czy finish () również wywołuje onPause () i onStop () przed wywołaniem onDestroy ()?
sr09
20
Każde zdarzenie cykl życia jak onCreate, onResume, onPause....onDestroy z działalności jest zawsze nazywany na jednym wątku - „głównym wątku”.
Krótko mówiąc, ten wątek jest wspierany przez kolejkę, do której wysyłane są wszystkie zdarzenia dotyczące aktywności. Ten wątek może wykonywać wszystkie te zdarzenia w kolejności wstawiania.
Jeśli wywołujesz finish()jedną z wywołań zwrotnych cyklu życia, takich jak onCreate()... wiadomość "koniec" zostanie dodana do tej kolejki, ale wątek nie może wybrać i wykonać akcji "zakończ", dopóki aktualnie wykonywana metoda nie zwróci, tj. Wątek zostanie zwolniony aktualne zadanie.
ondestroy() to ostatnie wezwanie, które otrzymujesz, zanim Twoja działalność zostanie zniszczona.
Może się tak zdarzyć, gdy czynność się kończy (ktoś ją wezwał finish() , lub ponieważ system tymczasowo niszczy tę instancję czynności, aby zaoszczędzić miejsce). Możesz rozróżnić te dwa scenariusze za pomocą isFinishing() metody.
Jeśli są dwa działania A i B. A twój przepływ przebiega od A> B; i B = A wzywa finish().
Następnie,
Metoda, z której wywołałeś, finish()zostanie wykonana, jak wspomniał Mark. A przepływ wywołań zwrotnych będzie następujący -
onPause() z activity A
onRestart()> onStart()> onResume()Aktywności B
Potem pojawia się prawdziwa różnica. Jeśli nie dzwoniłeś finish()z activity A; tylko onStop()z Activity Azostanie wezwanych tutaj. Chociaż w tym przypadku, gdzie nazwaliśmy finish()z Activity A; Tak więc onStop()i onDestroy()obie będą wezwane activity A.
Odpowiedzi:
Wywołana metoda
finish()
zostanie zakończona.finish()
Operacja nie będzie nawet zacząć, aż wrócisz do kontroli Androida.źródło
Każde zdarzenie cykl życia jak
onCreate
,onResume
,onPause
....onDestroy
z działalności jest zawsze nazywany na jednym wątku - „głównym wątku”.Krótko mówiąc, ten wątek jest wspierany przez kolejkę, do której wysyłane są wszystkie zdarzenia dotyczące aktywności. Ten wątek może wykonywać wszystkie te zdarzenia w kolejności wstawiania.
Jeśli wywołujesz
finish()
jedną z wywołań zwrotnych cyklu życia, takich jakonCreate()
... wiadomość "koniec" zostanie dodana do tej kolejki, ale wątek nie może wybrać i wykonać akcji "zakończ", dopóki aktualnie wykonywana metoda nie zwróci, tj. Wątek zostanie zwolniony aktualne zadanie.źródło
ondestroy()
to ostatnie wezwanie, które otrzymujesz, zanim Twoja działalność zostanie zniszczona.Może się tak zdarzyć, gdy czynność się kończy (ktoś ją wezwał
finish()
, lub ponieważ system tymczasowo niszczy tę instancję czynności, aby zaoszczędzić miejsce). Możesz rozróżnić te dwa scenariusze za pomocąisFinishing()
metody.źródło
Jeśli są dwa działania A i B. A twój przepływ przebiega od A> B; i B = A wzywa
finish()
.Następnie,
Metoda, z której wywołałeś,
finish()
zostanie wykonana, jak wspomniał Mark. A przepływ wywołań zwrotnych będzie następujący -onPause()
zactivity A
onRestart()
>onStart()
>onResume()
Aktywności Bfinish()
zactivity A
; tylkoonStop()
zActivity A
zostanie wezwanych tutaj. Chociaż w tym przypadku, gdzie nazwaliśmyfinish()
zActivity A
; Tak więconStop()
ionDestroy()
obie będą wezwaneactivity A
.źródło