10

我的 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()

但我不确定这是最好的解决方案,我想知道为什么会这样。

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

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

4

1 回答 1

3

+NoraBora 这是您包含在项目中的 GCM 库中的错误。这个错误在 r3 版本的 gcm.jar 中仍然存在

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

正如马克所说:

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

于 2013-06-28T09:17:58.093 回答