2013-04-04 49 views
10

我的Android应用程序有像下面崩溃报告。(很少见)激活锁定在锁定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) 

java.lang.RuntimeException: WakeLock under-locked C2DM_LIB,我可以尝试〜捕或使用isHeld()

,但我不确定这是最好的解决方案,我想知道为什么会发生这种情况。

一些猜测是BroadcastReceiver和Service在不同的过程 喜欢http://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4

但这是可能的吗?我从来没有在清单中使用android:process,所以BroadcastReceiver和Service应该在同一个(主)进程中,不是吗?

+0

您是否使用acquire(timeout)方法来获取唤醒锁? – edoardotognoni 2013-04-30 13:00:28

+0

它被复制:http://stackoverflow.com/a/12142013/450148 – 2013-09-19 19:07:42

回答

3

+ NoraBora这是来自您的项目中包含的GCM lib的错误。 此错误仍然存​​在在gcm.jar的R3版本

您可以在本期主题的更多信息:https://code.google.com/p/android/issues/detail?id=36364#makechanges

正如马克说:

是啊,遇到了那些WakefulIntentService 。如果您愿意 创建您自己的GCMBaseIntentService分支,请在isHeld()检查中包装WakeLock release()调用以避免此崩溃。