0

У меня есть две версии приложения, платная и бесплатная версия. Обе версии имеют один и тот же код для службы уведомлений. Одна версия работает другой, кажется, бежит через код и запускает метод, чтобы показать предупреждение, но это никогда не показывает пользователю, и вместо этого я получаю это в LogCat:WaitForGcToComplete заблокирован для 89.851ms для причины 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' 

Есть довольно много различий в другие области приложений, но одно недавнее дополнение - это отслеживание mixpanel, которое я видел, связанное с проблемами сбора мусора в прошлом. Это присутствует в обоих приложениях, но по-разному отслеживается в каждом.

Я просмотрел файл traces.txt, но, честно говоря, его массивный и им не уверен, что им нужно. Я нашел такие вещи, но это не помогло:

"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) 

Как я могу отладить это?


EDIT

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

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());*/ 
    } 

ответ

0

Обнаружена ошибка. Это довольно глупая ошибка.

Оказывается, у вас есть android:parentActivityName=, равный названию вида деятельности (копия и вставка). Это вызывает всевозможные ошибки сбора мусора, которые вы можете не заметить, если вы не пытаетесь отправить уведомление. Кто знал?