コードの小さなチャンクを頻繁に実行する必要があるアプリケーションを開発しています (たとえば、2 秒に 1 回)。シンプルな Thread.sleep() (または android.os.SystemClock.sleep() を使用して割り込みを回避し、最後に Timer と Handler で試しました) を使用して動作させようとしましたが、結果は時間プログラムがスリープするのはランダムです(または、タイマーまたはハンドラーを使用すると、画面がオフのときにシステムがメッセージを破棄するため、単に実行されません)。画面がオフのときにシステムがディープスリープモードになるためです。
たとえば、電話が充電器に接続されている場合、または音楽を再生している場合 (ディープ スリープ モードを回避する場合)、コードは正常に動作しますが、電話が何もしていない場合、時間は 2 秒のスリープから数分まで増加する可能性があります。寝る。
https://groups.google.com/forum/#!topic/android-developers/Eqwp8Uiy2f0から、唯一の代替手段は AlarmManager を使用して強制的にスリープを解除することですが、その方法ではおそらくバッテリーの消耗が多すぎます。
代替手段はありますか?
そうでない場合、システムがいつディープ スリープ モードに移行したかを検出する方法はありますか?