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.

