私は、居眠りモードでも完了するはずの一定の間隔(2分後としましょう)で繰り返しタスクを実行する必要があるアプリケーションに取り組んでいます。私の観察は以下に記載されています-
- アラーム (RTC フラグを使用) を使用して繰り返しタスクを実行することは正確ではありません。Android システムがアラームをバッチ処理します。RTC_WAKEUP を使用すると、RTC よりも優れていますが、Android Vitals に WAKEUP カウントが表示され、良くありません。
- ジョブスケジューラは便利ですが、2 分のような短い間隔では機能しません。Firebase Jobdispatcher を試してみましたが、これもあまり正確ではありません。2 分のトリガー時間でジョブを開始しましたが、10 ~ 20 分の範囲で変化していました。
- フォアグラウンド サービスでタスクを繰り返すためにハンドラーとタイマーを使用しました。このシナリオでは、フォアグラウンド サービスは引き続き Doze モードで実行されますが、ハンドラーとタイマーはタスクの繰り返しを停止します。Handlers.postDelayed() について読んだところ、これは居眠りモードの影響も受けていることがわかりました。
この繰り返しタスクの WAKELOCK を取得したくありません。
居眠りモードで短い間隔で繰り返しタスクを実行できる、より良い/クリーンな方法を提案してもらえますか?
参考のため -
Android:繰り返しのバックグラウンド タスク Android Oreo を準備するための最良の方法は何ですか?
Doze モードは、部分的/完全なウェイクロックの有無にかかわらず、バックグラウンド/フォアグラウンド サービスにどのように影響しますか?