Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid AlarmManager - Scheduling a recurring Intent to fire off twice a day
    text
    copied!<p>After reading lots of sample code into this matter, I'm trying to figure out the simplest way to achieve the following:</p> <p>I want to be able to schedule an Intent that calls back to my Alarm BroadcastReceiver, which in turn fires off my Service. However, I want to set up so that it calls said Intent twice a day and to only schedule the alarms if they haven't already been set (likewise for canceling the alarms).</p> <p>However, I am unsure if the following code is the correct way to set and cancel alarms.</p> <pre><code>//Static function for setting the alarm //My midday calendar object (cal1) ... //My evening calendar object (cal2) AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE) Intent myIntent = new Intent(context, MyAlarmReceiver.class); PendingIntent firstCallIntent = PendingIntent.getBroadcast(context, FIRST_CALL_ID, myIntent, PendingIntent.FLAG_NO_CREATE); PendingIntent secondCallIntent= PendingIntent.getBroadcast(context, SECOND_CALL_ID, myIntent, PendingIntent.FLAG_NO_CREATE); if(firstCallIntent == null){ if(DEBUG){ Log.d(TAG, "Setting Midday Alarm"); } firstCallIntent = PendingIntent.getBroadcast(context, FIRST_CALL_ID, myIntent, 0); alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, firstCallIntent); } if(secondCallIntent == null){ if(DEBUG){ Log.d(TAG, "Setting Evening Alarm"); } secondCallIntent = PendingIntent.getBroadcast(context, SECOND_CALL_ID, myIntent, 0); alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY, secondCallIntent); } //Static call to cancel the alarm. AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE) Intent myIntent = new Intent(context, MyAlarmReceiver.class); PendingIntent firstCallIntent = PendingIntent.getBroadcast(context, FIRST_CALL_ID, myIntent, 0); alarms.cancel(firstCallIntent); firstCallIntent.cancel(); PendingIntent secondCallIntent = PendingIntent.getBroadcast(context, SECOND_CALL_ID, myIntent, 0); alarms.cancel(secondCallIntent); secondCallIntent.cancel(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload