1

WakeLock を使用してバックグラウンドでサービスを開始し、作業後にサービスを停止して WakeLock を解放します。しかし、正しい順番がわかりません。正常に動作しますが、常にエラーが発生します:

10-13 14:48:23.320: A/PowerManager(20951): WakeLock finalized while still held: AppService

以下は私のコードスニップセットです:

PowerManager pm = (PowerManager)getApplicationContext().getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);

wl.acquire();

作業が完了したら、すべてを停止しますが、その順序は次のとおりです。

stopForeground(true);
wl.release();                   
stopSelf(); 
4

1 に答える 1

1

直後に stopSelf を呼び出しているため、stopForeground を呼び出す必要はありません。それが問題かもしれません。あなたが Wakelock オブジェクトをどこに持っているかを確認せずに、それが私の最善の推測です。ただし、stopSelf の前に release を呼び出すのは正しいです。

于 2012-10-13T13:33:54.983 に答える