Thanks for the clarification. I have a followup.
You said, "...there is only one PendingIntent instance for a
particular combination of: app, type
(activity, broadcast, etc), request code, and intent filter"

You mentioned request code. This is important for me because I need
some parameter to distinguish the multiple alarms.
However in the docs, it says,
http://developer.android.com/reference/android/app/PendingIntent.html#getActivity%28android.content.Context,%20int,%20android.content.Intent,%20int%29
"requestCode    Private request code for the sender (currently not
used)."

If request code is not used, then I am wondering how to distinguish
multiple alarms. Passing in extra params to the intent extras bundle
will not do because as you say, that is not used as a distinguishing
feature when comparing two pending intents.

thanks,
Anil
------------------


On Oct 23, 10:48 pm, Dianne Hackborn <[email protected]> wrote:
> A PendingIntent lasts for as long as things have reference on it.   It is
> not tied to an activity (well unless it is to deliver a result to an
> activity).
>
> As the doc says:
>
> A PendingIntent itself is simply a reference to a token maintained by the
> system describing the original data used to retrieve it. This means that,
> even if its owning application's process is killed, the PendingIntent itself
> will remain usable from other processes that have been given it. If the
> creating application later re-retrieves the same kind of PendingIntent (same
> operation, same Intent action, data, categories, and components, and same
> flags), it will receive a PendingIntent representing the same token if that
> is still valid, and can thus call
> cancel()<http://developer.android.com/reference/android/app/PendingIntent.html...()>
> to
> remove it.
>
> The AlarmManager only maintains one record per PendingIntent "instance" (as
> defined by the equals operator for PendingIntent).  However it is important
> to understand the semantics of creating a PendingIntent, in that there is
> only one PendingIntent instance for a particular combination of: app, type
> (activity, broadcast, etc), request code, and intent filter.  The latter is
> very important since it means that if you ask for a PendingIntent for Intent
> with action "foo", and give that to the alarm manager, and then time goes by
> (and your process is killed and restarted etc), then when you again ask for
> a PendingIntent for intent action "foo" you will get the *same* global
> instance is was returned by the first request, and thus the object will be
> the same as the instance the alarm manager has, allowing you to cancel,
> replace, or otherwise modify that currently scheduled alarm.
>
>
>
> On Sat, Oct 23, 2010 at 8:32 PM, Anil <[email protected]> wrote:
> > Trying to write a simple alarm clock with multiple alarms. However, I
> > don't understand this part: when an alarm has been set and has to be
> > modified or deleted, then the PendingIntent is used to set the alarm
> > with flags FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT.
> > But how is this checked with those PendingIntents already registered
> > with the Alarm Manager?
> > Is it just a reference == comparison? (in which case when back button
> > is pressed then references to the PendingIntents in my activity are
> > lost), or are the parts of the intent compared in a equals()
> > comparison?
>
> > In other words, can we be confident that Alarm Manager will accurately
> > say, "This is the same alarm and needs to be updated rather than added
> > as a new one"?
> > thanks,
> > Anil
>
> > --
> > 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]<android-developers%[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

Reply via email to