Процесс - плохая ошибка, похоже, не очень хорошо документирована, и мне удалось найти обходные пути. Вместо этого я заинтересован в причине этой ошибки и способах ее предотвращения, а не о том, как вручную ее обрабатывать с помощью перезагрузки, перезапуска приложения и т.д.
В моем конкретном приложении AlarmManager запускает IntentService, который работает в течение ~ 10 с каждые 30 секунд. Это называется созданием приложения:
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
);
Это работает, как ожидалось, большую часть времени. Однако очень редко служба не запускается в течение неопределенного периода времени, иногда по часам. Следующая ошибка наблюдается каждые ~ 30 секунд, поэтому я знаю, что мои будильники пытаются запустить IntentService по расписанию, но попытка не удалась с ошибкой процесса.
Unable to launch app com.example.android/10024 for service Intent { cmp=com.example.android/.MyService (has extras) }: process is bad
Это фиксируется просто повторным открытием приложения. Но мне нужно знать, как это предотвратить! Цель этой службы - работать в фоновом режиме, пока действия останавливаются или уничтожаются, поэтому она должна предотвращать эту ошибку без какого-либо взаимодействия с пользователем или обходной путь.