0

私のアプリは、デバイスが電源に接続されている場合は正常に動作しますが、デバイスのプラグが抜かれている場合は (時々) 失敗します。この問題の原因となるコードは次のとおりだと思います。

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "foo");
    wl.acquire();
foo();
    wl.release();

foo()Camera.takePicture()は、ご存知のように、完了までに数秒かかる並列タスクを実行するを呼び出す関数です。したがって、wl.release()写真がまだ撮られていないときに実際に呼び出されます。上記のコードは、スタンバイ モードからデバイスをウェイクアップするアラームによって実行されます。私の質問は、写真が撮影される前に呼び出される可能性があるという事実のために、写真が撮影される前にデバイスがスタンバイモードに戻るリスクはありますwl.releaseか? PARTIAL_WAKE_LOCKwl.release()を瞬時に解除するか、デバイスをしばらく実行モードのままにしますか?

コメントをお寄せいただきありがとうございます。

4

1 に答える 1

0

私の質問は、写真が撮影される前に wl.release が呼び出される可能性があるため、写真が撮影される前にデバイスがスタンバイモードに戻るリスクはありますか?

はい。

wl.release() は PARTIAL_WAKE_LOCK を瞬時に解放しますか

はい。

または、デバイスはしばらく実行モードのままですか?

それは、他に何が保持されているかによって異なりますWakeLock

于 2014-01-17T15:52:15.410 に答える