Mariano Kamp wrote:
> I use a static member for that and it makes my eyes bleed.

Umm...hmm...well...er...

If you want your service to completely go away between alarms, you need
your BroadcastReceiver to be registered via the manifest, rather than
tied into the system via registerReceiver() in the service. The latter
approach would likely keep the Service referenced and kept from being
garbage collected.

Given that, we now need to allocate a WakeLock in a BroadcastReceiver
and get it over to a newly-minted Service. WakeLock is not Parcelable.
Hence, I see no way to get the WakeLock to the Service except through
some static data member, somewhere. Whether that is a member on the
Service, on the BroadcastReceiver, or in some third class is an
implementation detail.

On the other hand, using registerReceiver() would allow you to keep the
WakeLock in the Service object without the static data member. It's a
trade-off -- if your alarm will fire frequently enough, it might be
better to keep the Service around rather than reallocating it all the
time. If your alarm is rather infrequent, though, I'd think it would be
better to let the Service go away and get reallocated when the alarm fires.

I'll be writing up the infrequent-alarm case (even though my sample code
will probably have the alarm going off every 5 minutes or so, just to
provide more rapid feedback to those playing with the code).

The good news, though, is that Ms. Hackborn's technique works great --
haven't missed an alarm in 12 hours (every 5 minutes), and the device
definitely has been asleep between alarms, given the battery level.

> And
> it makes it harder to handle cases where start is called more than once.

That problem can be dealt with, despite the static data member. Though
I'll need to beef up my sample some for this scenario -- I was thinking
the service would be long since wrapped up before the next alarm fired.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy

_The Busy Coder's Guide to Android Development_ Version 2.0 Available!

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