Я читаю много противоречивой информации по этой теме, поэтому собираюсь спросить себя с некоторыми конкретными примерами кода. Мое приложение для Android выдает ошибки «Сеть недоступна» при попытке сделать HTTP-запрос от фоновой службы, только когда телефон спит. Телефон использует мобильную сеть только тогда, когда я получаю эти ошибки (нет 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();
В этот момент я получаю исключение «Сеть недоступна», только когда телефон находится в спящем режиме.
Нормально ли иметь подобные проблемы в спящем режиме, или я могу подключиться к Интернету из своего сервиса? Похоже, что многие приложения проверяют электронную почту и другие вещи, поэтому она должна быть нормальной и работать большую часть времени?
Я просмотрел настройки телефонов и убедился, что все, что связано с фоновыми подключениями, включено. Это Спринт HTC, Эво, я думаю.