WakeLock未lockingGCM_LIB

我的android应用程序有如下的崩溃报告(非常罕见)

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 ,我可以尝试〜catch或使用isHeld()

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

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

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

  • 我怎样才能看到哪些唤醒锁是活跃的
  • 即使我释放它,WakeLock仍然保持错误状态
  • 正确的模式来获取BroadcastReceiver中的WakeLock并将其释放到服务中
  • WakeLock在仍然举行时最终确定
  • 初学者问题:Wakelocks
  • 在Android上关闭屏幕
  • 我怎样才能看到哪个唤醒者是活跃的
  • 用户不活动时屏幕变暗
  • + NoraBora这是来自您的项目中包含的GCM lib的一个bug。 这个bug在gcm.jar的r3版本中仍然存在

    您可以在此问题主题中find更多信息: https : //code.google.com/p/android/issues/detail?id=36364#makechanges

    正如马克所说:

    是的,与WakefulIntentService碰到了那些人。 如果您愿意创build自己的GCMBaseIntentService分支,请将wakeLock release()调用包装在isHeld()检查中以避免此类崩溃。