I've had the same issue(maybe) about my widget app.
If device goes sleep, my widget couldn't get data from internet
whether wake-lock uses or not.
So I set "Wi-Fi sleep policy" to "Never", I got data appropriately
while device is sleeping.
Since I published that app to Android Market, I didn't get any
complaints from users.
BUT this is not underlying solution, sorry...

On 4月1日, 午前2:57, Tako Au <[email protected]> wrote:
> Thanks Magpad for your kindly help
>
> So you're saying that my application's behaviour depends on the user's
> setting?
>
> On 4月1日, 上午1時49分, magpad <[email protected]> wrote:
>
>
>
> > Hi
>
> > How about "Wi-Fi sleep policy" setting?
> > Did you set "Never" value?
>
> > On 3月26日, 午後11:30, Tako Au <[email protected]> wrote:
>
> > > I have a terrible bug in my widget.  The widget is waken up using an
> > > AlarmManager (the update interval is chosen by users, ranging from 30
> > > mins to 2 hours) to grab some data from the Internet and display it on
> > > the widget.  I do not hold a wakelock since if the phone sleeps, just
> > > let it sleeps.  There's no way to update the information since nobody
> > > will see it.
> > > If I put the phone in the basement (has no wi-fi or cell signal) for
> > > about an hour. the phone will definitely not update anything.
> > > However, when I get it back from the basement, the cell network could
> > > never be recovered again no matter how long I have waited (it just get
> > > an X on the cell signal icon on the notification bar) that I must
> > > restart the phone.  May I know if a partial wake lock must be held on
> > > checking network availability?
>
> > > Your help is highly appreciated.  Please find the code skeleton as
> > > below:
>
> > >         public void onReceive(Context context, Intent intent) {
> > >                 ......
> > >                 Intent intent = new Intent(context, 
> > > UpdateAppWidget.class);
> > >                 context.startService(intent);
> > >                 ......
> > >         }
>
> > >         public static class UpdateAppWidget extends Service {
> > >                 @Override
> > >                 public void onStart(Intent intent, int startId) {
> > >                         ......
> > >                         ConnectivityManager cm =  (ConnectivityManager)
> > > context.getSystemService(Context.CONNECTIVITY_SERVICE);
> > >                         if
> > > (cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable() ||
> > >                                 
> > > cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isAvailable()) {
> > >                                 ......Grab something in the net.......
> > >                         }
>
> > >                         ......
> > >                         //  Make another alarm for next update
> > >                         Intent widgetUpdate = new Intent();
> > >                         
> > > widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
> > >                         
> > > widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new
> > > int[]{widgetId});
> > >                         
> > > widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_HEADER),
> > > String.valueOf(widgetId)));
> > >                         PendingIntent newPending = 
> > > PendingIntent.getBroadcast(this, 0,
> > > widgetUpdate, pendingIntent.FLAG_UPDATE_CURRENT);
> > >                         AlarmManager alarm = (AlarmManager)
> > > this.getSystemService(Context.ALARM_SERVICE);
> > >                                         alarm.set(AlarmManager.RTC, 
> > > System.currentTimeMillis() + 1000 *
> > > currentValue, newPending);
>
> > >                         //  Refresh the widget
> > >                         manager.updateAppWidget(widgetId, views);
>
> > >                         //  Kill the service after done
> > >                         this.stopSelf();
> > >                 }
> > >         }

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

To unsubscribe, reply using "remove me" as the subject.

Reply via email to