2011-01-04 18 views
11

Po uruchomieniu aplikacji w debugerze otrzymuję główny wątek i 3 wątki wiążące.Activity.finish() wywołana, ale aktywność zostaje załadowana do pamięci

Po kliknięciu przycisku Dzwonię pod numer Activity.finish(), który wygląda na to, że kończy działanie, gdy interfejs jest zamknięty i wraca do ekranu głównego.

Jednak w debugerze nadal pokazuje główny wątek i 3 wątki wiążące jako "(działające)".

Jestem zaskoczony, dlaczego tak się dzieje. Co więcej, powoduje to, że moja aplikacja wywołuje Activity.onResume(), gdy uruchomię ją ponownie po wyjściu z aplikacji.

Obecnie zastąpić te metody działania, ale wywołują odpowiednie Super funkcje w każdym:

  • onDestroy()
  • OnPause()
  • onResume()
  • onSaveInstanceState ()

Każda pomoc lub porada dotycząca tego jest bardzo cenna!

+0

Przeczytaj o cyklu życia działalności. I zrozum to http://www.androidjavadoc.com/1.0_r1_src/android/app/doc-files/activity_lifecycle.png – fiction

+0

Hi Fiction, wielokrotnie czytałem dokumentację, a zamieszczony obraz był tam, gdzie zrozumiałem od. Byłem po prostu zdezorientowany, aby zobaczyć, że to było wznawianie, a nie ponowne uruchamianie po wywołaniu Activity.finish(). – twig

Odpowiedz

22

Nie kontrolujesz, kiedy aplikacja opuszcza pamięć główną, system operacyjny. Przyjrzyj się Activity.finish ...

nazywają to gdy działalność jest wykonywana i powinny być zamknięte. Aktywność jest propagowana z powrotem do , kto uruchomił cię przez onActivityResult().

Uwaga, że ​​nic nie mówi o pamięci. Jeśli chodzi o wywoływanie Activity.onResume, jest to dokładnie to, czego można oczekiwać w cyklu życia; Pamiętaj, że onResume nie jest wywoływany po wznowieniu, ale nawet po pierwszym uruchomieniu aplikacji po onCreate.

Chociaż nie jest dokładnie to, co prosiłeś Proponuję przeczytać this article about exit buttons który idzie na powiedzieć coś bardzo ważnego

[Activity.finish] jest dokładnie równoważna naciśnięcie przycisku Wstecz.

+3

Dzięki za to Andrew, to było trochę otwieraczem umysłu. Zawsze myślałem, że Activity.finish() zamyka go, a nie umieszcza go w kolejce do zamknięcia. W tej sprawie trzeba trochę przerobić. – twig

Powiązane problemy