我的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一样,我可以尝试〜捕获或使用isHeld()
但我不确定这是最好的解决方案,我想知道为什么会这样。
有人猜测,BroadcastReceiver和Service处于不同的进程中 比如http://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4。但这有可能吗?我从未在清单中使用过android:process,因此BroadcastReceiver和Service应该在同一个(主要)进程中,不应该是吗?
答案 0 :(得分:3)
+ NoraBora这是您在项目中包含的来自GCM lib的错误。 这个bug仍然存在于gcm.jar的r3版本中
您可以在此问题主题中找到更多信息:https://code.google.com/p/android/issues/detail?id=36364#makechanges
正如马克所说:
是的,遇到了WakefulIntentService。如果你愿意的话 创建自己的GCMBaseIntentService派生,包装WakeLock release()调用isHeld()来避免这种崩溃。