Kostya,

How can it be transient?  Doesn't the instance have to remain in
existence for as long as the AppWidget exists on the Home Screen?
Clearly, I can do as you suggest; I'd just like to understand why it's
necessary.

Thanks.

...Jake


>>>>> "KV" == Kostya Vasilyev <[email protected]> writes:

   KV> Jake,

   KV> AppWidgetProviders are transient, you can't store any data in
   KV> these objects. They are created by Android as necessary and are
   KV> destroyed, from what I see with my widgets, quite aggressively.

   KV> Canceling an alarm doesn't require the same Java object you used
   KV> to set an alarm.

   KV> Just create another PendingIntent with the same values, and call
   KV> cancel() with this new object.

   KV> This will remove the need for storing data in AppWidgetProvider
   KV> instance variables, which you can't do.

   KV> -- Kostya

   KV> 15.07.2010 19:53, Jake Colman пишет:

   >> My AppWidget's onEnabled method creates two PendingIntents.  The
   >> first is to get location updates and the second is for an
   >> ELAPSED_REALTIME alarm.  The two PendingIntents are declared as
   >> private class-level variables so that I can access them later from
   >> different methods (obviously).  I'm having trouble canceling these
   >> PendingIntents and it looks like its because the variable has
   >> become null.  In the case of location updates, I crash when I
   >> execute LocationManager.removeUpdates.  In the case of the alarm,
   >> I do not crash but the alarm is not canceled.  I tried putting my
   >> cancel code in onDisabled and onDeleted (not at the same time) but
   >> it didn't work.  Any suggestions?
   >> 
   >> My code looks as follows:
   >> 
   >> public void onDeleted(Context context, int[] AppWidgetIds) {
   >> 
   >> Log.d("ZMAppWidget", "onDeleted");
   >> 
   >> // cancel location updates
   >> LocationManager lm = (LocationManager) context
   >> .getSystemService(Context.LOCATION_SERVICE);
   >> lm.removeUpdates(piLocation);
   >> 
   >> // cancel the alarm used to update the time
   >> AlarmManager alarms = (AlarmManager) context
   >> .getSystemService(Context.ALARM_SERVICE);
   >> alarms.cancel(piAlarm);
   >> 
   >> }
   >> 
   >> Thanks.
   >> 
   >> 

   KV> -- 
   KV> Kostya Vasilev -- WiFi Manager + pretty widget --
   KV> http://kmansoft.wordpress.com

   KV> -- 
   KV> You received this message because you are subscribed to the Google
   KV> Groups "Android Beginners" group.

   KV> NEW! Try asking and tagging your question on Stack Overflow at
   KV> http://stackoverflow.com/questions/tagged/android

   KV> To unsubscribe from this group, send email to
   KV> [email protected]
   KV> For more options, visit this group at
   KV> http://groups.google.com/group/android-beginners?hl=en

-- 
Jake Colman -- Android Tinkerer

-- 
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.

NEW! Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android

To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to