Можно ли создать какой-то глобальный обработчик исключений в Android?
Мое приложение включает в себя серию действий, через которые пользователь должен действовать линейно. Скажем, эта серия действий выглядит следующим образом: A (представляет главное меню), B, C, D, E. Пользователь выполняет следующие действия: A -> B -> C -> D -> E. В каждом из Эти действия пользователь должен либо ввести данные или позволить устройству получать данные автоматически (например, через сеть или Bluetooth).
Иногда мое приложение вылетает в одном из промежуточных действий. Обычно происходит то, что приложение возвращает действие или два назад. Например, если мое приложение вылетает в Деятельности D, оно может вернуться к Деятельности C или B. Но проблема в том, что после такого сбоя входные данные находятся в таком странном состоянии, что приложение снова вылетает и показывает силу закрыть диалоговое окно, вплоть до действия А, главного меню.
Как я могу поймать эти исключения, которые вызывают глобальные сбои во всем приложении, чтобы я мог очистить данные и изящно позволить пользователю вернуться в главное меню?
2 ответа
Расширить класс приложения
import android.app.Application;
import android.util.Log;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Log.e("MyApplication", ex.getMessage());
}
});
}
}
Добавьте следующую строку в файл AndroidManifest.xml в качестве атрибута приложения
android:name=".MyApplication"
Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler()... );