задний план
Я пытаюсь зафиксировать все сбои и разрешить пользователю отправлять собственный отчет об ошибках по электронной почте.
это очень временное решение, так как мне нужно отправить журналы приложения и другую информацию. он не предназначен для отправки конечным пользователям. только очень маленькая группа тестировщиков.
как это работает
в любом случае, я создал класс, который расширяется от java.lang.Thread.UncaughtExceptionHandler и имеет функцию uncaughtException(). я регистрируюсь в нем с помощью Thread.setDefaultUncaughtExceptionHandler(), и он действительно отлавливает сбои.
функция сохраняет некоторые данные во внешнем хранилище и сразу же открывает приложение электронной почты (gmail) для отправки отчета о сбое.
проблема
это работает довольно хорошо, но по какой-то причине, когда я закрываю приложение электронной почты, само приложение перезапускается.
Я пробовал несколько комбинаций:
- Система.выход(0)
- android.os.Process.killProcess(android.os.Process.myPid());
- вызов UncaughtExceptionHandler по умолчанию.
ни один не работал. он закрывает приложение, но как только закрывает приложение электронной почты, приложение перезапускается
я также не могу понять, как делать вещи, которые работают в потоке пользовательского интерфейса при захвате сбоев (например, тосты, диалоги и т. д.).
другое решение, которое я пробовал, - это открытие новой активности, которая отправит отчет о сбое. к сожалению, приложение даже не начало свою деятельность.
еще одна вещь, которую я пробовал, - это читать из библиотеки ACRA, пытаясь выяснить, как они справляются со сбоями. к сожалению, я не понимал, что там происходит, даже на высоком уровне.
Я искал здесь (на SO) решение и нашел несколько сообщений, но ни один из них не работал у меня.
вопрос
как я могу избежать перезапуска приложения при закрытии приложения электронной почты?