我正在阅读有关此主题的大量相互矛盾的信息,因此请问自己一些特定的代码示例。尝试从后台服务发出HTTP请求时,我的Android应用程序出现“网络不可用”错误,仅在手机处于睡眠状态时。只有当我收到这些错误时,手机才会使用移动网络(建筑物内没有Wi-Fi)。
我使用此代码来安排我的服务:
static private void SchedulePoll(Context context,int minsFromNow)
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, minsFromNow);
Intent intent = new Intent(context, PSDroidBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
}
我的服务获取PARTIAL_WAKE_LOCK,然后调用:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
此时我只有在手机处于睡眠模式时才会收到网络不可用异常。
在睡眠模式下出现此类问题是正常的,还是应该可以通过我的服务建立互联网连接?似乎有很多应用程序检查电子邮件和其他东西,所以它应该是正常的并且大部分时间都可以工作?
我浏览了手机设置并确保启用了与背景连接相关的所有内容。我认为它是Sprint HTC,Evo。
答案 0 :(得分:2)
原来这是一部名为“Juice Defender”的手机应用程序。我想这是为了节省电池寿命,一旦我们禁用它,我的应用程序工作。 GMai也没有启用它,所以我觉得很安全,除了使错误信息更直观之外,我没有太多可以做的设计我的应用程序。
答案 1 :(得分:-1)
即使使用Partial_Wake_Lock
,您也需要:
Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY,
Settings.System.WIFI_SLEEP_POLICY_NEVER);
取自:How do I keep Wifi from disconnecting when phone is asleep?