Search code examples
androidalarmmanager

Alarm Manager triggering only the last scheduled task in Android


I am using Alarm Manager to schedule different jobs to be executed at different hours of the day. When i am scheduling only one job it is working expectedly, but when i schedule multiple jobs, only the last scheduled gets executed. Below are my codes.

  private void triggerAlarm(int hr, int min, String sid, String cid) {
    Intent intentToFire = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
    intentToFire.putExtra("cid", cid);
    intentToFire.putExtra("sid", sid);

    intentToFire.setAction(ACTION_ALARM);


    PendingIntent alarmIntent = PendingIntent.getBroadcast(getApplicationContext(),
            0, intentToFire, 0);
    AlarmManager alarmManager = (AlarmManager) getApplicationContext().
            getSystemService(Context.ALARM_SERVICE);

    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, hr);
    c.set(Calendar.MINUTE, min);
    c.set(Calendar.SECOND, 0);
    long afterTwoMinutes = c.getTimeInMillis();

    alarmManager.set(AlarmManager.RTC_WAKEUP, afterTwoMinutes, alarmIntent);
    //sendBroadcast(intentToFire);
}

Solution

  • You can use id for your AlarmReceiver I Also Using this and hope it's also works for you

    in targetCal Param just pass your calander obje where you selecting time for alarm

    like this

    private void setAlarm(Calendar targetCal) {
    
            Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
            final int _id = (int) System.currentTimeMillis();
            PendingIntent appIntent = PendingIntent.getBroadcast(this, _id, intent,PendingIntent.FLAG_ONE_SHOT);
           // PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
            AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
                    appIntent);
    
        }
    

    Hope it works for you.