2013-04-04 47 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()調用以避免此崩潰。