Можно ли создать какой-то глобальный обработчик исключений в Android? - PullRequest
2 голосов
/ 02 августа 2011

Мое приложение включает в себя серию действий, с помощью которых пользователь должен действовать линейно. Допустим, эта серия действий выглядит следующим образом: A (представляет главное меню), B, C, D, E. Пользователь выполняет следующие действия: A -> B -> C -> D -> E. В каждом из В этих действиях пользователь должен либо ввести данные, либо разрешить устройству автоматически получать данные (например, через сеть или Bluetooth).

Иногда мое приложение вылетает в одном из промежуточных действий. Обычно происходит то, что приложение возвращает действие или два назад. Например, если мое приложение вылетает в Деятельности D, оно может вернуться к Деятельности C или B. Но проблема в том, что после такого сбоя входные данные находятся в таком странном состоянии, что приложение снова падает и показывает силу Закрыть диалоговое окно, вплоть до Главного меню «Задание A».

Как я могу поймать эти исключения, которые вызывают глобальные сбои во всем приложении, чтобы я мог очистить данные и изящно позволить пользователю вернуться в главное меню?

Ответы [ 2 ]

3 голосов
/ 11 сентября 2014

Расширить класс приложения

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"
0 голосов
/ 02 августа 2011
    Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler()... );
...