Proces ten jest błędem nie wydaje się być bardzo dobrze udokumentowany, a ja tylko udało mi się znaleźć obejścia. Zamiast tego interesuje mnie przyczyna tego błędu i jak temu zapobiec, a nie jak ręcznie obsłużyć go poprzez ponowne uruchomienie, ponowne uruchomienie aplikacji, itp.Zapobieganie procesowi "proces jest zły" błędu
Moja szczególna aplikacja używa Menedżera alarmów do uruchomienia usługi IntentService, która działa dla ~ 10 s co ~ 30s. Nazywa się to przy tworzeniu aplikacji:
Intent serviceIntent = new Intent(appContext, MyService.class);
serviceIntent.putExtra("service_extra", extra);
launchService = PendingIntent.getService(
appContext,
LAUNCH_SERVICE_REQUEST_CODE,
scanIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
alarmManager.setInexactRepeating(
AlarmManager.RTC,
System.currentTimeMillis() + interval,
interval,
launchService
);
Działa to zgodnie z oczekiwaniami przez większość czasu. Jednak bardzo rzadko usługa nie uruchomi się na czas nieokreślony, czasami po kilka godzin. Poniższy błąd występuje co ~ 30 s, więc wiem, że moje alarmy próbują uruchomić IntentService zgodnie z harmonogramem, ale próba nie powiedzie się, gdy proces jest błędny.
Unable to launch app com.example.android/10024 for service Intent { cmp=com.example.android/.MyService (has extras) }: process is bad
Naprawiono to po prostu ponownie otwierając aplikację. Ale muszę wiedzieć, jak temu zapobiec! Celem tej usługi jest uruchamianie w tle, gdy działania są zatrzymywane lub niszczone, więc musi zapobiegać temu błędowi bez interwencji użytkownika lub obejścia.
Czy w usłudze jest jakaś zmienna statyczna? – Rahul
Nie jestem pewien, nie dotknąłem kodu od lat i nie mam już do niego dostępu. Ale prawdopodobnie tak. Dlaczego? – tep