2012-02-04 4 views
3

У меня есть это приложение, которое нужно извлекать данные с сервера каждые 30 минут, после большого поиска я достиг такого решения: 1- использование AlarmManager для уведомления приложения каждые 30 минут вместо того, чтобы обслуживание работало в фоновом режиме. 2- использование wakelocks с PARTIAL_WAKE_LOCKAndroid: Как разбудить WIFI (или 3G) от AlarmManager?

Моя единственная проблема в том, что Wi-Fi отключен во время сна.

Как я могу запросить подключение к Интернету, когда срабатывает будильник?

ответ

0

У меня была точно такая же проблема некоторое время назад. К сожалению, мне это не удалось. Я попытался следующие:

WifiManager wman = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE); 

    try { 
     wman.reconnect(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 

    } 

Может быть, вы можете играть с WifiManager и найти способ, который я не нашел. О да, не забудьте установить разрешения WIFI в манифесте.

Приветствие Lukas

0
  1. менеджер сигнализации просыпается вашим бодрствующих пристальных услуг через приемник
  2. бодрствует умысел служба получает блокировку WiFi
  3. службы регистрирует приемник для подключения и вызывает reconnect(), reassociate() и все, что необходимо (это может быть специфичным для устройства)
  4. сервис ждет на защелке
  5. ресивер просыпается, когда WiFi подключается

Скелет код: https://stackoverflow.com/a/19968708/281545

0

Примечание для Android 6 (уровень API-23) и выше. Поскольку Google представил Оптимизацию для Doze и App Standby, все усложняется. Посмотрите здесь - https://developer.android.com/training/monitoring-device-state/doze-standby.html Теперь гораздо сложнее принудительно получить доступ к сети в определенное время.