これは以前に何度か尋ねられたことは知っていますが、今まで自分に合ったものを見つけることができませんでした. setRepeating() を使用して、アラーム マネージャーを毎分実行するようにスケジュールしています。ただし、これは Android 6.0 の Doze モード以降は機能しなくなりました。setExactAndAllowWhileIdle() も使用してみましたが、setexactRepeating ではないため、繰り返されていないようです。
以下は私のコードです、
PendingIntent service; // A pending intent object
Intent intentForService = new Intent(
context.getApplicationContext(),
ServiceToUpdateWidget.class);
final AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(System.currentTimeMillis(), service);
final Calendar time = Calendar.getInstance();
time.set(Calendar.MINUTE, 0);
time.set(Calendar.SECOND, 0);
time.set(Calendar.MILLISECOND, 0);
if (service == null) {
service = PendingIntent.getService(context, 0,
intentForService, PendingIntent.FLAG_CANCEL_CURRENT);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),60000, service);
ServiceToUpdateWidget を毎分呼び出す必要があります。電話がディープスリープまたは居眠りモードに入った場合でも、それを行う方法はありますか. この目的でタイマーやカウントダウンを使用できますか? 居眠りモードで動作しますか?
以下のような多くのリンクをたどりましたが、
ただし、まだ 1 分ごとにサービスを呼び出すことはできません。
また、alarmManager.setAlarmClock() を使用してみましたが、まだうまくいきません。
次のようなリンクを見つけました: https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_which_will_work/
「アラームが鳴るたびに setExactAndAllowWhileIdle() を使用して新しいアラームを手動で設定する必要があります。ただし、setInexactRepeatingAndAllowWhileIdle() が存在しないのには理由があります。これにより、ユーザーのバッテリー寿命が短くなります。本当に必要な場合にのみ、この回避策を使用してください。それ。"
以前のアラームがオフになったときに、新しいアラームを手動で設定するにはどうすればよいですか? お願いします、誰か助けてくれませんか?