По сути, вам нужно реализовать свой собственный экземпляр UncaughtExceptionHandler , тогда вам нужно будет убедиться, что для каждого потока, запускаемого вашим приложением, вы вызываете setUncaughtExceptionHandler .
Затем, когда в каком-либо из этих потоков возникает неперехваченное исключение, будет вызван ваш собственный UncaughtExceptionHandler
, и вы сможете оттуда запланировать перезапуск приложения или что-то еще, прежде чем передать исключение.
Я не делаюзнать, действительно ли имеет смысл просто перезапустить приложение в этом случае.Пользователь может быть весьма «удивлен», если в середине его взаимодействия приложение «сбрасывается» и не возобновляет работу с того места, где оно было всего секунду назад, возможно, даже теряя предыдущий ввод пользователя и т. Д.
Редактировать:
См. здесь , ответ Гюри.Кроме того, вам нужно всего лишь реализовать интерфейс , а именно UncaughtExceptionHandler
, и вставить в него код Гюри.
Редактировать # 2:
Для справки: Запущенная служба "липкая" может также достичь желаемого результата.