I know that this has been asked several times before, but I have not been able to find something that could work for me till now. I am using setRepeating() to schedule the alarm manager to run every minute. However, this has stopped working after the Android 6.0 Doze mode. I have also tried using the setExactAndAllowWhileIdle() but it doesn't not seem to be repeating as it is not setexactRepeating.
The below is my code,
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);
I need to call the ServiceToUpdateWidget every minute. Is there a way to do it even when the phone goes into a deep sleep or doze mode. Can I use a timer or count down for this purpose? Will thry work in the doze mode?
I have gone through many links like below,
How to make Alarm Manager work when Android 6.0 in Doze mode?
How to set the repeating alarm which will work even in Doze mode?
AlarmManager not set or not firing on Marshmallow after certain time
However, I am still not able to call my service every one minute.
I have also tried using alarmManager.setAlarmClock(), still no luck.
I found a link that says : https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_which_will_work/
"You manually have to set a new alarm with setExactAndAllowWhileIdle() each time the alarm goes off. However, there is a reason why no setInexactRepeatingAndAllowWhileIdle() exists: This will reduce battery life for your users. Only use this workaround if you really need it."
How can I manually set a new alarm when the previous alarm foes off? Please, can anyone help?