0

Ich habe zwei Versionen einer App, eine kostenpflichtige und eine kostenlose Version. Beide Versionen verwenden denselben Code für einen Benachrichtigungsdienst. Eine Version arbeitet daran, die andere durch den Code auszuführen scheint und startet die Methode, um die Warnung zu zeigen, aber dies zeigt nie an den Benutzer und stattdessen bekomme ich diese in der logcat:WaitForGcToComplete blockiert für 89.851ms wegen Ursache DisableMovingGc

20:23:51.926 I/art: WaitForGcToComplete blocked for 5.737ms for cause DisableMovingGc 
04-20 20:23:54.531 I/art: Thread[5,tid=12452,WaitingInMainSignalCatcherLoop,Thread*=0xb7e9eec0,peer=0x32c0a0a0,"Signal Catcher"]: reacting to signal 3 
04-20 20:23:54.755 I/art: Wrote stack traces to '/data/anr/traces.txt' 

Es gibt durchaus ein paar Unterschiede in andere Bereiche der Apps, aber eine neuere Ergänzung war die des Mixpanel-Trackings, die ich in der Vergangenheit mit Garbage-Collection-Problemen in Verbindung gebracht habe. Dies ist in beiden Apps vorhanden, aber unterschiedliche Tracking in jedem.

Ich habe in der Datei traces.txt nachgesehen, aber um ehrlich zu sein, es ist massiv und ich bin nicht sicher, was ich suche. Ich habe Sachen wie dieses gefunden, aber es hilft nicht:

"ActivityManager" prio=5 tid=16 TimedWaiting 
    | group="main" sCount=1 dsCount=0 obj=0x12d4c9e0 self=0xb7e73020 
    | sysTid=579 nice=-2 cgrp=default sched=0/0 handle=0xb7e73628 
    | state=S schedstat=(0 0 0) utm=2110 stm=2446 core=1 HZ=100 
    | stack=0xa396a000-0xa396c000 stackSize=1036KB 
    | held mutexes= 
    at java.lang.Object.wait!(Native method) 
    - waiting on <0x1b396375> (a com.android.server.am.ActivityManagerService$5) 
    at java.lang.Object.wait(Object.java:422) 
    at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:4800) 
    - locked <0x1b396375> (a com.android.server.am.ActivityManagerService$5) 
    at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:4777) 
    at com.android.server.am.ActivityManagerService.appNotResponding(ActivityManagerService.java:5018) 
    at com.android.server.am.BroadcastQueue$AppNotResponding.run(BroadcastQueue.java:171) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
    at com.android.server.ServiceThread.run(ServiceThread.java:46) 

Wie gehe ich über debugging dieses?


EDIT

In Lieu zu wissen, wie ich gerade über Hacking bin zu debuggen und den Code erlauben Auskommentierung der Dienst am Laufen zu halten, um seine etwas in hier verursacht die Gc Fehler aber warum, seine identisch die andere App, die funktioniert?

void sendNotification(String message) { 
     Log.e(TAG, "send notification"); 

     /*NotificationCompat.Builder mBuilder = 
       (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.ic_notification_icon) 
         .setContentTitle(message) 
         .setContentText("since you last serviced your shocks") 
         .setColor(0xffCDDC39) 
         .setAutoCancel(true); 
     Intent resultIntent = new Intent(this, ActivitiesActivity.class); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addParentStack(ActivitiesActivity.class); 
     stackBuilder.addNextIntent(resultIntent); 
     PendingIntent resultPendingIntent = 
       stackBuilder.getPendingIntent(
         0, 
         PendingIntent.FLAG_UPDATE_CURRENT 
       ); 
     mBuilder.setContentIntent(resultPendingIntent); 
     NotificationManager mNotificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(mId, mBuilder.build());*/ 
    } 

Antwort

0

Den Fehler gefunden. Das ist ein ziemlich törichter Fehler.

Stellt sich heraus, dass von Ihnen android:parentActivityName= gleich dem Namen der Aktivität (Kopieren und Einfügen Tippfehler) verursacht alle Arten von Garbage Collection-Fehler, die Sie möglicherweise nicht bemerken, es sei denn, Sie versuchen, eine Benachrichtigung zu senden. Wer wusste?