Можно ли создать какой-то глобальный обработчик исключений в 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()... );
Другие вопросы по тегам