Because that is how we want and designed it to work.

On Wed, Jul 14, 2010 at 11:27 AM, Satya Komatineni <
satya.komatin...@gmail.com> 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 <hack...@android.com>
> 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
> > <satya.komatin...@gmail.com> 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 <hack...@android.com>
> >> 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
> >> > <satya.komatin...@gmail.com> 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
> >> >> android-developers@googlegroups.com
> >> >> To unsubscribe from this group, send email to
> >> >> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> >> >> For more options, visit this group at
> >> >> http://groups.google.com/group/android-developers?hl=en
> >> >
> >> >
> >> >
> >> > --
> >> > Dianne Hackborn
> >> > Android framework engineer
> >> > hack...@android.com
> >> >
> >> > 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
> android-developers@googlegroups.com
> >> > To unsubscribe from this group, send email to
> >> > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> >> > 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
> android-developers@googlegroups.com
> >> To unsubscribe from this group, send email to
> >> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> >> For more options, visit this group at
> >> http://groups.google.com/group/android-developers?hl=en
> >
> >
> >
> > --
> > Dianne Hackborn
> > Android framework engineer
> > hack...@android.com
> >
> > 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 android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> > 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 android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to