Я использую flurry o trace сбои и ошибки в своем приложении для Android. Недавно я обнаружил проблему, при которой некоторые из моих ошибок (записанных с помощью метода onError ()) не отображаются в flurry analitycs.

Чтобы проверить, не было ли это какой-то проблемой конфигурации или задержкой, я выдал несколько ошибок с той же конфигурацией из другого места моего приложения. В результате я увидел, что ошибки, сгенерированные из активности, принимаются правильно, но некоторые ошибки, сгенерированные из моих служб, не принимаются. Я включил журнал flurry, и они говорят, что эти ошибки отправляются, но панель мониторинга flurry их не видит.

Например, ошибку, которая никогда не получена, я запускаю из специального UncaughtExceptionHandler, поскольку Flurry также не сообщает о сбое службы. Вот его код:

    final Context context = this;
    final Thread.UncaughtExceptionHandler uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
            Log.e(TAG, "ERROR DETECTED------------------------------------------", ex);
            //Utils.sendFlurryError(context, "serviceCrash", "Uncaught error in Swiper Sevice",new Exception(ex));
            FlurryAgent.onError("serviceCrash","Uncaught error in Swiper Service",ex );
            NotificationManagerCompat manager = NotificationManagerCompat.from(context);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                    .setContentIntent(PendingIntent.getActivity(context, 42, new Intent(context, AppConstants.LAUNCH_CLASS), 0))
                    .setSmallIcon(R.drawable.icon_notif2)
                            //.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.logo_rond))
                    .setGroup("swiper")
                    .setAutoCancel(true)
                    .setContentTitle("Swiper")
                    .setContentText("Swiper met an error. Please restart swiper to correct it");
            manager.notify(Notification.SWIPER_NOTIF_ID, builder.build());
           uncaughtExceptionHandler.uncaughtException(thread, ex);
        }

    });

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

0
Laetan 16 Окт 2015 в 12:38

2 ответа

Лучший ответ

Проверьте это для отслеживания сбоев

https://www.crashlytics.com/

Это хорошая библиотека, сделанная твиттером.

0
Lakhwinder Singh 16 Окт 2015 в 11:28

onError был построен больше как аналог регистрации событий, чем как ответ на сообщения о сбоях. Фактически, отправляемая вами трассировка будет усечена после 256 символов, что является максимальной длиной, которую значение может иметь в событии.

Однако Flurry предлагает решение для отчетов о сбоях, которого должно хватить в данном случае.

https://developer.yahoo.com/flurry/docs/overview/lexicon/crashanalytics/

0
Mike 20 Окт 2015 в 19:58