WakeLock被锁定的GCM_LIB

10

我的安卓应用程序收到了以下崩溃报告。(非常罕见)

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一样,我可以尝试使用try~catch或isHeld()来解决问题,但我不确定这是否是最佳解决方法,并且我想知道为什么会发生这种情况。

有些人猜测BroadcastReceiver和Service在不同的进程中,就像http://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4所说的那样。

但这真的可能吗?我从未在清单文件中使用过android:process,因此BroadcastReceiver和Service应该在同一个(主)进程中,是吗?


你是否正在使用 acquire(timeout) 方法来获取 wakelock? - edoardotognoni
它是重复的:https://dev59.com/XWct5IYBdhLWcg3wXsXH#12142013 - Felipe
1个回答

3
+NoraBora,您的项目中包含的GCM库存在一个错误。 这个错误在gcm.jar的r3版本中仍然存在。
您可以在这个问题线程中找到更多信息:https://code.google.com/p/android/issues/detail?id=36364#makechanges 正如Mark所说:
“是的,我在WakefulIntentService中遇到了这些问题。如果您愿意创建自己的GCMBaseIntentService分支,请在isHeld()的检查中包装WakeLock release()调用以避免此崩溃。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接