Сообщить о невыясненных исключениях
Я хочу поймать необработанные исключения и отправить отчеты о них на мой сервер. Вот как я это реализую:
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;
}
}
Это правильный способ реализовать это? Любая другая альтернатива?
1 ответ
Решение
Вместо того, чтобы делать это самостоятельно, используйте уже настроенный сервис для этого.
Acra - один из них, и он может загружать ваши отчеты о сбоях в электронную таблицу Документов Google.
Bugsense это другое. У него есть бесплатные аккаунты и платные аккаунты.
Crashlytics является довольно новым для Android, но совершенно бесплатно, поэтому я рекомендую его. Это действительно просто настроить.