Я хочу поймать нечеткие исключения и отправить отчеты о них на свой сервер. Вот как я его реализую:Сообщить о неперехваченных исключениях
public final class MyApplication extends Application
{
private static Context context;
private static Handler mainHandler;
private static boolean isDebug;
@Override
public void onCreate()
{
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler()
{
@Override
public void uncaughtException(final Thread thread, final Throwable ex)
{
new Thread()
{
@Override
public void run()
{
Looper.prepare();
ReportUtils.sendReport(thread, ex);
Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(thread, ex);
Looper.loop();
Looper.myLooper().quit();
}
}.start();
}
});
context = getApplicationContext();
mainHandler = new Handler();
isDebug = (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE));
}
@Override
public void onTerminate(){}
public static Context getAppContext()
{
return context;
}
public static boolean isDebugMode()
{
return isDebug;
}
public static Handler getMainHandler()
{
return mainHandler;
}
}
Это правильный способ его реализации? Любая другая альтернатива?
Лично я бы использовал ACRA в качестве отправной точки, настроив ее на работу с моей внутренней системой (или отрегулируйте внутреннюю систему, чтобы она была готова к ACRA). – CommonsWare
Игнорировать мой предыдущий комментарий, не понимал, что вы на Android. Тем не менее, вы всегда должны предпочитать «ExecutorService» над созданием нового 'Thread' самостоятельно –
@CommonsWare Спасибо за ваше предложение. –