2013-04-04 14 views
10

mia app androide ottenuto crash report come qui di seguito. (Molto raro)Wakelock sotto-locked GCM_LIB

java.lang.RuntimeException: WakeLock under-locked GCM_LIB 
    at android.os.PowerManager$WakeLock.release(PowerManager.java:325) 
    at android.os.PowerManager$WakeLock.release(PowerManager.java:300) 
    at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:252) 

Come java.lang.RuntimeException: WakeLock under-locked C2DM_LIB, ho potuto provare ~ cattura o utilizzando isHeld()

ma non sono certo questa è la soluzione migliore e voglio sapere perché questo sta accadendo.

Qualche ipotesi è che BroadcastReceiver e Service in diversi processi come http://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4.

Ma è possibile? Non ho mai usato Android: process in manifest, quindi BroadcastReceiver e Service dovrebbero essere nello stesso processo (principale), non dovrebbero?

+0

Stai utilizzando il metodo di acquisizione (timeout) per l'acquisizione di wakelock? – edoardotognoni

+0

È duplicato: http://stackoverflow.com/a/12142013/450148 –

risposta

3

+ NoraBora questo è un bug da GCM lib incluso nel progetto. Questo bug è ancora lì nella versione r3 del gcm.jar

È possibile trovare maggiori informazioni in questa discussione Problema: https://code.google.com/p/android/issues/detail?id=36364#makechanges

Come Mark disse:

Yup, corse in quelli con WakefulIntentService . Se sei disposto a creare il tuo fork di GCMBaseIntentService, racchiudi la chiamata a WakeLock release() in un controllo di isHeld() per evitare questo arresto anomalo.

Problemi correlati