2009-06-21 12 views
8

Mam aplikację, którą chciałbym w pełni wyłączyć/zamknąć, gdy jest wstrzymana (np. Kiedy użytkownik naciśnie przycisk Strona główna, Zakończ (zadzwoń) i Wstecz, chciałbym aby aplikacja była zamknięte, zamiast zapisywane w stosie historii).Killing aplikacji Android w przerwie

Jak to zrobić ...?

Dzięki.

Odpowiedz

23

Wykonaj onPause() w swojej działalności i zadzwoń pod numer finish() w sprawie Twojej aktywności. Pamiętaj jednak, że będzie to miało miejsce w każdej pauzie, w tym w oknach dialogowych, przychodzących połączeniach, użytkownikach aktywujących numer Notification. Możesz rozważyć wykonanie finish() w onStop(), co przynajmniej rozwiąże problem z dialogiem.

Pamiętaj też, że użytkownicy mogą się zdezorientować podczas korzystania z aplikacji, sądząc, że uległa ona awarii, ponieważ zniknęła, gdy próbują się z nią skontaktować.

+0

Dzięki za odpowiedź, spróbuję tego. Aplikacja musi działać tak, ponieważ chciałbym, aby aplikacja była uruchomiona tylko wtedy, gdy użytkownik ma ją na pierwszym planie, a pozostawianie jej w tle może spowodować ekstremalną utratę żywotności baterii. – Tom

+1

W takim przypadku nie powinieneś jednak zabijać całej aktywności. Po prostu wyłącz to, co robisz, czyli żuć baterię i włącz ją ponownie w onStart() lub onResume(). – CommonsWare

+0

Kiedy wywołam finish() w onPause(), po prostu wymusza zamknię cie. Pomysły? – Tom

2

Wiesz, jak masz metodę w swojej działalności OnCreate(), która wykonuje działania po uruchomieniu. Trzeba dodać coś takiego:

@Override 

protected void onPause(){ 
finish(); 

     super.onPause(); 

} 

w swojej działalności, aby dodać czynności przed rozpoczęciem

w tym przypadku komenda

finish(); 

to, co chcesz, aby wykonać przed wstrzymuje swoją działalność.

Powiązane problemy