2017-01-14 3 views
0

Я использую андроид Google Analytics и Firebase для отслеживания ошибокRuntimeException - ApplicationPackageManager.getPackageInfo в Android

код Analytics используется от

http://www.androidhive.info/2015/08/android-integrating-google-analytics-v4/

погрешность является показать в следующей части кода

public void trackException(Exception e) { 
     if (e != null) { 
      Tracker t = getGoogleAnalyticsTracker(); 

      t.send(new HitBuilders.ExceptionBuilder() 
          .setDescription(
            new StandardExceptionParser(this, null) 
              .getDescription(Thread.currentThread().getName(), e)) 
          .setFatal(false) 
          .build() 
      ); 
     } 
    } 

детали ошибки в firebase являются RuntimeException - ApplicationPackageManager.getPackageInfo

Exception java.lang.RuntimeException: Package manager has died 
android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:160) 
com.google.android.gms.analytics.StandardExceptionParser.setIncludedPackages() 
com.google.android.gms.analytics.StandardExceptionParser.<init>() 
com.Quest.MyApplication.trackException (MyApplication.java:85) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.SongPlayer (PlayService.java:552) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.PlaySong (PlayService.java:527) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.PlayRecievedSong (PlayService.java:499) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.PlayNormalNext (PlayService.java:894) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.PlayNext (PlayService.java:839) 
com.Quest.MediaPlayer.MusicPlayer.Mp3Player.Audioplayer.PlayService.onCompletion (PlayService.java:972) 
android.media.MediaPlayer$EventHandler.handleMessage (MediaPlayer.java:3351) 
android.os.Handler.dispatchMessage (Handler.java:102) 
android.os.Looper.loop (Looper.java:135) 
android.app.ActivityThread.main (ActivityThread.java:5910) 
java.lang.reflect.Method.invoke (Method.java) 
java.lang.reflect.Method.invoke (Method.java:372) 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1405) 
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200) 
+0

Просьба указать реализацию getGoogleAnalyticsTracker() – jonathanrz

+0

'MyApplication.getInstance(). TrackException (e);' это просто это – 1234567

ответ

0

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

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

Быстрое решение заключается в изменении статической ссылки на WeakReference и просто вызове trackException, если у вас все еще есть ссылка. Лучшее решение - не зависеть от контекста, всегда получать.

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

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