Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid AlarmManager - Scheduling a recurring Intent to fire off twice a day
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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