Показать страницу ошибки при сбое приложения из-за необработанного исключения

1

Я хочу начать действие, когда мое приложение падает из-за некоторого необработанного исключения. я реализовал следующие вещи

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();


    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            handelUnCoughtException(t,e);
        }
    });
}


private void handelUnCoughtException(Thread t , Throwable e){
    Toast.makeText(this , "Handeling Error" , Toast.LENGTH_LONG).show();
    Intent serviceintent = new Intent(this , ErrorHandelingService.class);
    startService(serviceintent);
}

}

выше мой класс приложения, где я установил setDefaultUncaughtExceptionHandler по умолчанию, но я не могу запустить свой сервис, где у меня есть код для начала деятельности, пожалуйста, помогите.

Теги:
exception-handling

1 ответ

0

Я написал следующий класс для необученного исключения

открытый класс UncaughtExceptionHandler реализует Thread.UncaughtExceptionHandler {

private Context context;
private Class<? extends AppCompatActivity> erroractivity;

public UncaughtExceptionHandler(Context context, Class<? extends AppCompatActivity> erroractivity) {
    this.context = context;
    this.erroractivity = erroractivity;
}

public static void setUpErrorHandlingActivity(Context context, Class<? extends AppCompatActivity> erroractivity) {
    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(context, erroractivity));
}


@Override
public void uncaughtException(Thread thread, Throwable throwable) {
    new SystemLog().writeAppRecLog("UNCAUGHT_EXCEPTION", "UnCaught Exception.", (Exception) throwable);
    Intent errorActivityIntent = new Intent(context, erroractivity);
    errorActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    errorActivityIntent.setAction("FROM_ERROR_ACTIVITY");
    context.startActivity(errorActivityIntent);
    Process.killProcess(Process.myPid());
    System.exit(10);
}

}

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

        UncaughtExceptionHandler.setUpErrorHandlingActivity(getActivityContext(), ErrorActivity.class);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню