2013-04-04 12 views
10

私のAndroidアプリは以下のようなクラッシュレポートを得た。(非常にまれ)java.lang.RuntimeException: WakeLock under-locked C2DM_LIB同様WakeLockの下でロック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) 

、私は〜キャッチまたは使用isHeld()

を試みることができるが、私はありませんよこれが最善の解決策であることを確かめ、なぜこれが起こっているのかを知りたい。

一部の推測では、BroadcastReceiverとServiceが異なるプロセスであることがあります。 はhttp://groups.google.com/group/cw-android/browse_thread/thread/9716bc101ce72fb4です。

これは可能ですか?私はアンドロイドを使用したことはありません:マニフェストでのプロセスなので、BroadcastReceiverとサービスは同じ(メイン)プロセスになければなりませんか?

+0

wakelockの取得にはacquire(timeout)メソッドを使用していますか? – edoardotognoni

+0

複製されています:http://stackoverflow.com/a/12142013/450148 –

答えて

3

+ NoraBoraこれはあなたのプロジェクトに含まれているGCM libのバグです。 このバグは、あなたがこの問題のスレッドでより多くの情報を見つけることができますgcm.jar

のR3バージョンでまだそこにある:うん

をWakefulIntentService持つものに走った:マークが言ったようにhttps://code.google.com/p/android/issues/detail?id=36364#makechanges

。 GCMBaseIntentServiceの独自のフォークを作成する場合は、このクラッシュを回避するために、WakeLock release()コールをisHeld()のチェックでラップします。

関連する問題