I have implemented an Alarm class wich should set a new pending Intent and always overriwrite the old one. (I would rather stop/delete all old ones but I dont know how to)
private void startAlarm(){
Intent intent = new Intent(source, Alarm_Activity.class);
// 10000 should be the ID of Intent
PendingIntent pendingIntent = PendingIntent.getActivity(source, 10000, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager)source.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent);
}
Unfortionatly I create this class multiple times and from different activities. I think this is the reason why it doesnt cancel the last intent (Flag_cancel_current). How can I make the Flag work throughout multiple instances of this class?
Given your code, so long as all places are using the same Intent
(pointing to Alarm_Activity.class
) and are using the same PendingIntent
ID (10000
in your sample), your code will cancel any current PendingIntent
.
This does not cancel any current alarms.
To cancel an alarm, call cancel()
on AlarmManager
. In particular, if you do this, get rid of PendingIntent.FLAG_CANCEL_CURRENT
, so your cancelling of the old PendingIntent
does not somehow interfere with your cancelling of the old alarm tied to that PendingIntent
.