Проблема с подключением к Интернету во время сна Android - PullRequest
0 голосов
/ 24 января 2012

Я читаю много противоречивой информации по этой теме, поэтому собираюсь спросить себя с некоторыми конкретными примерами кода. Мое приложение для 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, Эво, я думаю.

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Оказывается, это было приложение на телефоне под названием "Juice Defender". Я предполагаю, что это разработано, чтобы спасти заряд батареи, как только мы отключили это, мое приложение работает. GMai также не работал с этим включенным, так что я чувствую себя довольно уверенно, что я мало что мог сделать, чтобы лучше спроектировать свое приложение ... кроме как сделать сообщение об ошибке более интуитивным.

0 голосов
/ 24 января 2012

Даже с Partial_Wake_Lock вам нужно что-то вроде:

Settings.System.putInt(getContentResolver(),
  Settings.System.WIFI_SLEEP_POLICY, 
  Settings.System.WIFI_SLEEP_POLICY_NEVER);

Взято из: Как мне предотвратить отключение Wi-Fi, когда телефон спит?

...