2010-04-07 21 views

Odpowiedz

102

czy to wychodzi bezpośrednio lub uzupełnia funkcję, z której została wywołana ?

metodę, która będzie działać pod nazwą finish() do zakończenia. finish() operacja nie zacznie się, dopóki nie zwrócisz kontroli do systemu Android.

+2

Następnie, jak zakończyć działanie, które jest wywoływane przez StartAvtivityforResults() bez zakończenia? –

+0

@CommonsWare Jak możemy zapewnić, że onStop jest zawsze wywoływany? W mojej aplikacji OnStop i onDestroy nie są w niektórych przypadkach wywoływane, aw tych przypadkach działanie podrzędne trwa zbyt długo i wygląda na to, że aplikacja zawiesiła się ...Podczas gdy onStop nazywa się wszystko działa normalnie. Jestem na Galaxy y z systemem Android 2.3.6 ... zobacz moje pytanie na http://stackoverflow.com/questions/13928591/a-strange-behavior-of-android-activities-fragments-and-intent plz help !! ! – aProgrammer

+0

@CommonsWare Przetestowałem sir bardzo prawdziwe. + 1 dla ciebie Ale chcę zadać jedno pytanie, które napisałem finish() jako pierwsze zdanie w mojej funkcji, to wykonuje całą funkcję, a następnie finish() nazywa się Jak to zarządza. –

13

ondestroy() to ostatnie połączenie, które otrzymasz przed zniszczeniem działalności.

może się to zdarzyć, albo dlatego, że aktywność kończy (ktoś nazywa finish() na nim, albo dlatego, że system jest tymczasowo niszcząc to wystąpienie działania w celu zaoszczędzenia miejsca. Można rozróżnić tych dwóch scenariuszy z metodą isFinishing().

1

Jeśli są dwie czynności A i B. I twój przepływ zaczyna się od A> B; i B = A dzwoni finish().

Następnie

Sposób gdzie nazywa finish() od wykona jak wspomniano Mark. I przepływ callbacków będzie jak następuje -

  1. onPause() od activity A
  2. onRestart()>onStart()>onResume() działalności B
  3. Potem przychodzi prawdziwa różnica. Jeśli nie zadzwoniłeś pod numer finish() z activity A; tylko onStop() z Activity A zostanie wywołana tutaj. Natomiast w tym przypadku, gdy nazwaliśmy finish() z Activity A; Tak więc onStop() i oba będą wywoływane dla activity A.
13

Każde zdarzenie cykl życia jak onCreate, onResume, .... onDestroy z działalności jest zawsze nazywany na jednym wątku - „głównej nitki”.

W skrócie ten wątek jest wspierany przez kolejkę, w której publikowane są wszystkie zdarzenia aktywności. Ten wątek może wykonywać wszystkie te zdarzenia w kolejności wstawiania.

Jeśli dzwonisz finish() w jednym z wywołań zwrotnych cyklu życia takich jak onCreate() ... komunikat „wykończenie” zostanie dodane do tej kolejki, ale wątek nie może swobodnie wybierać & execute „mety” działanie aż aktualnie wykonywany metoda zwraca, tzn. wątek zostaje zwolniony z bieżącego zadania.

+0

ładnie wyjaśniono +1 – tpk

Powiązane problemy