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