ウェイクロックについて質問です。以下に示す場合、Android OS はウェイクロックを解放し (PARTIAL_WAKE_LOCK
指定する必要がある場合)、ウェイクロックが取得されたままになり、電源をオフにする (スリープしない) までバッテリーを浪費するのを防ぎます。
ケース 1-a:
アプリがスレッドの 1 つで (タイムアウト オプションなしで) ウェイクロックを取得し (この場合は妥当であると考えてください)、重要なタスクが終了したときにウェイクロックを解放するように設計されています。アプリはタスクマネージャーまたは悪名高いタスクキラーによって強制終了される可能性があり、アプリはそのスレッドがウェイクロックを解放する機会がありません。そのウェイクロックはどうなりますか?
ケース 1-b:
(ケース 1-a に対する回答が「はい、心配しないでください」の場合、このケースは無視してください。) ケース 1-a と同じですが、アプリはウェイクロックにタイムアウト オプションを与えました。たとえば 3 秒です。このタイムアウト オプションは有効に保たれていますか?
ケース 2-a:
AlarmManager によって (ブロードキャスト レシーバー経由で) 開始されたサービスがあり、そのサービスがウェイクロックを取得した (タイムアウト オプションなし) と想像してください。このサービスは、ウェイクロックの取得時間を最小限に抑えるように設計されています。しかし、残念なことに、Android OS は、メモリ不足のためにこのサービスを強制終了することを選択しました。(OS が wakelock を取得したときにサービスを kill しないかどうかはわかりませんが、OS は気にしないと思います。ただし、OS が後で wakelock を解放してくれることを願っています。) その wakelock はどうなりますか?
ケース 2-b:
(ケース 2-a に対する回答が「はい、心配しないでください」の場合は、このケースを無視してください。) ケース 2-a と同じですが、サービスはウェイクロックにタイムアウト オプションを与えました。たとえば 3 秒です。このタイムアウト オプションは有効に保たれていますか?