Androidアプリは、ユーザーが特定の時刻に通知を送信して日々の計画に従うのを支援します。このタスクはJobSchedulerで簡単に解決できます。それは簡単で、軽く、最新の解決策のようです。Androidで1日に1回スケジュールされたタスクを実行する
私が苦労しているのは、毎日すべての通知を計画する方法です。私はユーザの毎日の計画をチェックし、毎日午前0時に静かに通知をスケジュールするコードを実行する必要があります。これまでに2つのアプローチが見つかりました
JobServiceを使用してください。それは
公共最終無効jobFinished(JobParameters paramsは、ブールneedsReschedule)
で再スケジュールすることができますが、私は必要があります
ので、私はそれが悪い解決策だと思います成功したとしても、終了した仕事を失敗として扱う。
スケジュール時間は線形/累乗で増加するそれは私には受け入れられません。
別のアプローチは、AlarmManagerを使用することであるが、デバイスが眠っている間、それはまた、欠点のカップル
- は、ドキュメント によると
登録アラームが保持されています(また、その間に電源がオフになった場合はデバイスを起動することもできます)、電源を切って再起動するとクリアされます。
私のユーザーは何か重要なことを逃すことができるので、これは受け入れられません。
- バッテリーがかなり早く消滅すると読んだことがあります。本当?私はマニュアルに記載されていました
他のソリューションは私が必要なもののように見えていません。 (https://developer.android.com/topic/performance/scheduling.html)
日常的にスケジュールされたタスクを実行して再起動する方法はありますか。
良いアイデア。しかし、以下のコメントに基づいて、私はJobSchedulerの実行を延期できるので、Dozeモードも考慮する必要があります。だから私が理解する限り、私はJobSchedulerとAlarmMangerでこの機能を実装することができ、バッテリ消費とスケジュール時間精度の間の唯一のトレードオフです。少なくとも、いくつかの選択肢があるのは良いことです。ありがとうございました! – StackNRG