WakeLock заблокирован GCM_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 не заблокирован C2DM_LIB, я мог бы попробовать ~ catch или использовать isHeld()
но я не уверен, что это лучшее решение, и я хочу знать, почему это происходит.
Предполагается, что BroadcastReceiver и Service в разных процессах
например http://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4.
Но возможно ли это? Я никогда не использовал андроид: процесс в манифесте, поэтому BroadcastReceiver и Service должны быть в одном и том же (основном) процессе, не так ли?
Ответы
Ответ 1
+ NoraBora это ошибка из GCM lib, которую вы включили в свой проект.
Эта ошибка все еще существует в версии r3 gcm.jar
Дополнительную информацию можно найти в этом выпуске: https://code.google.com/p/android/issues/detail?id=36364#makechanges
Как сказал Марк:
Yup, столкнулся с теми, у кого есть WakefulIntentService. Если вы готовы создайте свою собственную вилку GCMBaseIntentService, оберните WakeLock release() в чеке isHeld(), чтобы избежать этого сбоя.