Ok, thank you very much Satya On Wed, Jul 14, 2010 at 3:35 PM, Dianne Hackborn <[email protected]> wrote: > Because that is how we want and designed it to work. > > On Wed, Jul 14, 2010 at 11:27 AM, Satya Komatineni > <[email protected]> wrote: >> >> Dianne, >> thanks again. >> >> Sorry to still hang around the issue. >> >> I do understand that the "PendingIntent.getActivity, broadcast, >> service" etc return a key matching the passed in in intent. I think I >> got that. >> >> That doesn't explain why the AlarmManagerService **explicitly** >> removes the passed in pending intent from the "alarmmanager.set()" >> operations from an existing set of alarms... >> >> Infact when I do the following >> >> am.set(time1, pendingintent_1); >> am.set(time2, pendingintent_1); >> >> Internally the AlarmManagerService is executing >> >> am.set(time1, pendingintent_1); >> am.cancel(pendingintent_1); >> am.set(time2, pendingintent_1); >> >> Although the "cancel" is done through a direct call to "remove". >> >> Eitheway this is just a clarification, I think the end result is the >> same which matches with your explanation, except that it doesn't >> happen through hashmap or something like that but seem to be an >> explicit removal. >> >> >> >> >> On Wed, Jul 14, 2010 at 1:04 PM, Dianne Hackborn <[email protected]> >> wrote: >> > PendingIntent *is* a key. When you obtain a PendingIntent with the same >> > Intent (in terms of intent filter matching) as a previous one, you will >> > receive a PendingIntent object that is equal to the previous one you >> > got. >> > >> > On Wed, Jul 14, 2010 at 7:12 AM, Satya Komatineni >> > <[email protected]> wrote: >> >> >> >> I would have probably seen that if the "operation" indicated by the >> >> "pendingintent" is used as a key. >> >> >> >> But I am saying an explicit "removal" of the alarm containing the >> >> "operation" (pending intent). >> >> >> >> See the code (little) below. >> >> >> >> Moreover what one is doing is >> >> >> >> alarms.put("at 11pm", foo) >> >> alarms.put("at 12 pm", foo) >> >> >> >> Conceptually I would have understood if I did >> >> >> >> pendingintent.gooff("at 11"); >> >> pendingintent.gooff("at 12"); >> >> >> >> *** AlarmManagerService.java extract >> >> >> >> 160 public void setRepeating(int type, long triggerAtTime, long >> >> interval, >> >> 161 PendingIntent operation) { >> >> 162 if (operation == null) { >> >> 163 Slog.w(TAG, "set/setRepeating ignored because there >> >> is no intent"); >> >> 164 return; >> >> 165 } >> >> 166 synchronized (mLock) { >> >> 167 Alarm alarm = new Alarm(); >> >> 168 alarm.type = type; >> >> 169 alarm.when = triggerAtTime; >> >> 170 alarm.repeatInterval = interval; >> >> 171 alarm.operation = operation; >> >> 172 >> >> 173 // Remove this alarm if already scheduled. >> >> 174 removeLocked(operation); >> >> 175 >> >> 176 if (localLOGV) Slog.v(TAG, "set: " + alarm); >> >> 177 >> >> 178 int index = addAlarmLocked(alarm); >> >> 179 if (index == 0) { >> >> 180 setLocked(alarm); >> >> 181 } >> >> 182 } >> >> 183 } >> >> >> >> >> >> AlarmManagerService doest maintain separate 'alarm' objects with every >> >> "set" even with the same equivalent intent. It then physically removes >> >> one of the alarm objects that were scheduled earlier. >> >> >> >> Is this to avoid a later confusion between two alarms with the same >> >> intent?? >> >> >> >> Anyway thanks for chiming in >> >> >> >> Satya >> >> >> >> >> >> On Wed, Jul 14, 2010 at 1:58 AM, Dianne Hackborn <[email protected]> >> >> wrote: >> >> > If they are the same intent, they can not be uniquely distinguished, >> >> > so >> >> > the >> >> > more recent one replaces the previous. >> >> > It's like doing: >> >> > HashMap<String, Foo> alarms; >> >> > Foo foo1 = new Foo(); >> >> > Foo foo2 = new Foo(); >> >> > alarms.put("mything", foo1); >> >> > alarms.put("mything", foo2); >> >> > The second call replaces the value of the first. >> >> > >> >> > On Tue, Jul 13, 2010 at 8:04 PM, Satya Komatineni >> >> > <[email protected]> wrote: >> >> >> >> >> >> It was a bit baffling (Probably there is a good reason, and it >> >> >> doesnt >> >> >> take much to baffle me) >> >> >> >> >> >> AlarmManager am; >> >> >> ... >> >> >> PendingIntent pi; >> >> >> >> >> >> >> >> >> am.set(pi, ...) at 11pm >> >> >> am.set(pi,...) at 2pm >> >> >> >> >> >> Same "pending intent" with the same intent and request code, in >> >> >> otherwords they resolve to same intent on equals. >> >> >> >> >> >> Although I know what happens (being the latest one takes >> >> >> precedence), >> >> >> I would have expected my broadcast receiver to be called twice. >> >> >> >> >> >> I thought something funny is happening in the PendingIntent. >> >> >> >> >> >> However when I looked at the AlarmManagerService.java I have noticed >> >> >> that the "set.." methods are calling a "remove" using the >> >> >> PendingIntent that is passed in, essentially cancelling the one >> >> >> before. >> >> >> >> >> >> Why is that?? >> >> >> >> >> >> It is late, my head hurts, I am hoping someone will throw some >> >> >> light. >> >> >> >> >> >> Thanks a bunch >> >> >> Satya >> >> >> >> >> >> -- >> >> >> You received this message because you are subscribed to the Google >> >> >> Groups "Android Developers" group. >> >> >> To post to this group, send email to >> >> >> [email protected] >> >> >> To unsubscribe from this group, send email to >> >> >> [email protected] >> >> >> For more options, visit this group at >> >> >> http://groups.google.com/group/android-developers?hl=en >> >> > >> >> > >> >> > >> >> > -- >> >> > Dianne Hackborn >> >> > Android framework engineer >> >> > [email protected] >> >> > >> >> > Note: please don't send private questions to me, as I don't have time >> >> > to >> >> > provide private support, and so won't reply to such e-mails. All >> >> > such >> >> > questions should be posted on public forums, where I and others can >> >> > see >> >> > and >> >> > answer them. >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "Android Developers" group. >> >> > To post to this group, send email to >> >> > [email protected] >> >> > To unsubscribe from this group, send email to >> >> > [email protected] >> >> > For more options, visit this group at >> >> > http://groups.google.com/group/android-developers?hl=en >> >> >> >> -- >> >> You received this message because you are subscribed to the Google >> >> Groups "Android Developers" group. >> >> To post to this group, send email to >> >> [email protected] >> >> To unsubscribe from this group, send email to >> >> [email protected] >> >> For more options, visit this group at >> >> http://groups.google.com/group/android-developers?hl=en >> > >> > >> > >> > -- >> > Dianne Hackborn >> > Android framework engineer >> > [email protected] >> > >> > Note: please don't send private questions to me, as I don't have time to >> > provide private support, and so won't reply to such e-mails. All such >> > questions should be posted on public forums, where I and others can see >> > and >> > answer them. >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Android Developers" group. >> > To post to this group, send email to [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > For more options, visit this group at >> > http://groups.google.com/group/android-developers?hl=en >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en > > > > -- > Dianne Hackborn > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

