2011-12-22 11 views
5

Chcę ponownie uruchomić usługę automatycznie, jeśli wystąpi awaria aplikacji. Moje pomysły to:Automatycznie zrestartuj usługę, gdy nastąpi awaria apk

1: BroadcastReceiver podczas awarii APK i automatyczny restart usługa

if("android.intent.action.SOMETHING".equals(intent.getAction())) 
    { 
    Intent serviceLauncher = new Intent(context, Service.class); 
    context.startService(serviceLauncher); 
    } 

2: z uncaughtException(), ale nie wiem, aby poradzić

Odpowiedz

5

myślę, trzeba tylko zwrócić START_STICKY w onStartCommand() Służby

+0

Spróbuję tego tak szybko, jak tylko mogę i dam ci raport: –

+0

Po prostu przeczytałem opis na http://developer.android.com/reference/android/app/Service.html#START_STICKY i myślę, że to właśnie Potrzebuję, dziękuję –

+0

Myślę, że START_STICKY tylko upewnij się, że usługa się uruchamia, ale kiedy usługa jest uruchomiona, nie uruchamia się ponownie po chrash, czyż nie? –

0

Do chcesz, aby twoja usługa NAPRAWDĘ ponownie się uruchomiła lub chcesz, aby Twoja usługa była kontynuowana? Myślę, że usługa nie jest zatrzymywana, gdy aplikacja jest rozbita, usługa jest oddzielna od aplikacji, która ją tworzy.

+0

hmm może mój opis jest trochę tak, chcę, aby ponownie uruchomić usługę, gdy idzie w dół. –

+0

Myślę, że jedynym rozwiązaniem jest odizolowanie miejsca, w którym może nastąpić awaria aplikacji (awaria aplikacji nie spowoduje działania) i użycie funkcji próbnej. – VinceFR

0

Można użyć setUncaughtExceptionHandler

Po odebraniu zdarzenia można ponownie uruchomić usługę,

Innym rozwiązaniem, które może działać (trzeba spróbować), dzwoni StartService na metodzie OnDestroy.

Powiązane problemy