2014-06-09 15 views
13

Usługa ma zaimplementowaną metodę onTaskRemoved().
Gdy usługa została uruchomiona za pomocą metody startService() onTaskRemoved() wywołana, gdy aplikacja została usunięta z listy ostatnich aplikacji poprzez przesunięcie.
Ale jeśli usługa rozpoczęła się z bindService(), to onTaskRemoved() nigdy nie był wywoływany.
Jak wykonać wywołanie usługi onTaskRemoved(), gdy aplikacja została usunięta z listy ostatnich aplikacji przez przesunięcie po uruchomieniu z bindService()?Usługa: onTaskRemoved nie jest wywoływany, jeśli uruchomiony z bindService

następujących metod zwanych jeśli zaczęło się:

1. bindService(): 
Activity﹕ onCreate() 
CustomService﹕ onCreate() 
CustomService﹕ onStart() 
CustomService﹕ onStartCommand() 
CustomService﹕ onBind() 
// Here we swipe to remove app from recent-apps-list 
CustomService﹕ onTrimMemory() 

2. startService(): 
ActivityA﹕ onCreate() 
CustomService﹕ onCreate() 
CustomService﹕ onStart() 
CustomService﹕ onStartCommand() 
CustomService﹕ onBind() 
// Swipe to remove app from recent-apps-list 
CustomService﹕ onTrimMemory() 
CustomService﹕ onTaskRemoved() // <===== 
CustomService﹕ onUnbind() 
+2

Ważna uwaga: 'onTrimMemory()' jest wywoływana za każdym razem, gdy aplikacja przechodzi w tle, nie musisz "przesuwać, aby usunąć" aplikacji, aby ją wyzwolić. Nastąpi to, jeśli naciśniesz przycisk Home. Twój komentarz jest mylący. – ForceMagic

Odpowiedz

11

Usługa może być związany lub rozpoczęte lub oba. To zależy od sposobu implementacji onStartCommand i onBind powiedzieć dokumenty.

http://developer.android.com/guide/components/services.html

Ale jeśli chcesz, aby Twój serwis zrobić zarówno zatrzymać się i porozmawiać z klientami nad IBinder następnie po prostu uruchomić usługę, a następnie wiążą się z nim.

startService(new Intent(context, CustomerService.class)); 
// Bind to the service 
bindService(new Intent(context, CustomerService.class), 
         mConnection, Context.BIND_AUTO_CREATE); 
+0

Robię to samo i onStartCommand() również wywoływane, ale usługa nie działa w tle. Aplikacja zniszczyć, a następnie zniszczyć serwis .. możesz pomóc? –

+0

Aby uzyskać pomoc, potrzebuję trochę więcej kodu. Zadaj pytanie po napisaniu kodu. Ktoś tutaj w SO pomoże. – danny117

+0

Trochę działa, gdy aplikacja niszczy, usługa faktycznie zatrzymuje się i ponownie uruchamia. Jego funkcje onCreate() i onStartCommand() ponownie wywołują, po prostu chcę, aby usługa nie zatrzymywała się i ponownie się uruchamia. Po prostu chcę, żeby działało nieprzerwanie w tle. Masz pomysł, jak to osiągnąć? –

Powiązane problemy