Re: [android-developers] What does/does not belong in WidgetProvider

2011-02-12 Thread Mark Murphy
Your entire question is phrased around "the Widget". There is no "the
Widget". From the opening sentence of your question, I am interpreting
"the Widget" to mean "a subclass of AppWidgetProvider that handles the
processing for an app widget or family of app widget instances".

On Sat, Feb 12, 2011 at 5:42 AM, AndroidDevTime
 wrote:
> 1) If the Application needs to always listen for certain events
> whether they show up in the widget or not where should this go? In the
> Widget?

There is no reason for an AppWidgetProvider to respond to other
broadcasts, since anything can update the app widget's RemoteViews.
And an AppWidgetProvider cannot register listeners (e.g.,
PhoneStateListener).

Hence, I would say the answer here is "no".

> 2) Should the widget issue notification? or request a service to issue
> them? ie should the notification logic reside in the widget itself or
> in the service.

Technically, AFAIK, raising a notification is cheap and therefore safe
for an AppWidgetProvider to do.

Logically, an AppWidgetProvider should never have any reason to raise
a notification, IMHO.

> 3) Should the widget issue broadcasts or ask a service to do this?

Technically, AFAIK, sending a broadcast is cheap and therefore safe
for an AppWidgetProvider to do.

Logically, an AppWidgetProvider should never have any reason to send
broadcasts, IMHO.

> 4) Should the widget ever access any system services like like
> Notification Manager, PowerManager etc Why, Why not?

This cannot be answered in the abstract.

> 5) Should the widget keep any of its own state? If it should not keep
> state how can it change what it displays? Like a different text or
> icon?

It may need to. For example, suppose you have an app widget that shows
the weather for a certain city. The configuration activity for that
app widget allows the user to choose the city. Somewhere, you need to
store that city, and distinct from the cities that any other instance
of that app widget may need (e.g., user adds two copies of the app
widget to track weather in two cities).

> 6) Should the widget start off activities or let a service handle
> this?

An AppWidgetProvider should never have a reason to directly "start off
activities", nor should a service triggered from an AppWidgetProvider
have any reason to directly "start off activities", IMHO.

However, either are perfectly welcome to create PendingIntents that
"start off activities" and attach them as click handlers for widgets
in an app widget's RemoteViews.

> 7) is it ok to user the context passed to update and receiver or
> should one use ctx.getApplicationContext() to do things like
> context.startService? ( Perhaps the one passed in is the application
> context ? )

Most things you can just use the passed-in Context. One thing that
will not work for is using registerReceiver() with a null receiver to
get the last value of a sticky broadcast, such as
ACTION_BATTERY_CHANGED -- for that, you will need to use
getApplicationContext().

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

_The Busy Coder's Guide to Android Development_ Version 3.4 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


[android-developers] What does/does not belong in WidgetProvider

2011-02-12 Thread AndroidDevTime
Widget Provider is a specialized BroadcastReceiver.

Assuming there exists an Application, 1-n android service,1-k
activities, and potentially additional 0-n broadcast receivers that
are not widgets, I would like to verify what belongs and does not
belong logically inside the broadcast receiver. Here are some items ..

And assuming that generally what gets launched is the widget first.

Please comment on any or all of the items as to whether you think they
belong inside or outside the WidgetProvider and why.  Pass over any
that you are not interested in.  Thanks.

1) If the Application needs to always listen for certain events
whether they show up in the widget or not where should this go? In the
Widget? If not what would keep the broadcast receiver available to
listen to the events  for duration of the the application?

2) Should the widget issue notification? or request a service to issue
them? ie should the notification logic reside in the widget itself or
in the service.

3) Should the widget issue broadcasts or ask a service to do this?

4) Should the widget ever access any system services like like
Notification Manager, PowerManager etc Why, Why not?

5) Should the widget keep any of its own state? If it should not keep
state how can it change what it displays? Like a different text or
icon?

6) Should the widget start off activities or let a service handle
this?

7) is it ok to user the context passed to update and receiver or
should one use ctx.getApplicationContext() to do things like
context.startService? ( Perhaps the one passed in is the application
context ? )

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