4

これは以前に何度か尋ねられたことは知っていますが、今まで自分に合ったものを見つけることができませんでした. 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() が存在しないのには理由があります。これにより、ユーザーのバッテリー寿命が短くなります。本当に必要な場合にのみ、この回避策を使用してください。それ。"

以前のアラームがオフになったときに、新しいアラームを手動で設定するにはどうすればよいですか? お願いします、誰か助けてくれませんか?

4

0 に答える 0