2013-07-25 2 views
0

Я хочу поймать нечеткие исключения и отправить отчеты о них на свой сервер. Вот как я его реализую:Сообщить о неперехваченных исключениях

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; 
    } 
} 

Это правильный способ его реализации? Любая другая альтернатива?

+0

Лично я бы использовал ACRA в качестве отправной точки, настроив ее на работу с моей внутренней системой (или отрегулируйте внутреннюю систему, чтобы она была готова к ACRA). – CommonsWare

+0

Игнорировать мой предыдущий комментарий, не понимал, что вы на Android. Тем не менее, вы всегда должны предпочитать «ExecutorService» над созданием нового 'Thread' самостоятельно –

+0

@CommonsWare Спасибо за ваше предложение. –

ответ

0

Вместо этого сделайте это, используя сервис, уже настроенный для этого.

Acra является одним из них и может загружать отчеты о сбоях в электронную таблицу Документов Google.

Bugsense - это еще один. Он имеет бесплатные учетные записи и платные аккаунты.

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

Смежные вопросы