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
>> 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

-- 
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