Android: временное подключение к Wi-Fi в спящем режиме

Если телефон настроен на отключение Wi-Fi, когда телефон переходит в спящий режим, мое приложение потеряет соединение. Хорошо задокументированная проблема заключается в том, что когда некоторые устройства выходят из спящего режима, соединение WiFi даже не восстанавливается, хотя значок WiFi указывает на то, что соединение установлено. Я видел, как это происходит на одном из моих устройств.

Но я не понимаю, как работает приложение Gmail. Даже в спящем режиме, если приходит почта, вы получаете уведомление. Тем не менее, если WiFi отключен в спящем режиме, то единственный способ, которым приложение Gmail может проверить почту, — это включить WiFi. Я предполагаю, что он включает его, а затем отключает после проверки почты. Итак, как я могу сделать то же самое? Или я ошибаюсь, и WiFi никогда не отключается, потому что Gmail всегда держит его включенным? Но откуда мне это знать?


person AndroidDev    schedule 06.05.2012    source источник
comment
привет @AndroidDev, у меня сейчас такая же проблема. вы решаете этот вопрос? если вы нашли какое-либо решение для этой проблемы, пожалуйста, помогите мне ..   -  person user512    schedule 01.04.2016


Ответы (2)


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

Между прочим, Gmail и другие используют push-уведомления, если вам интересно, см. «Обмен сообщениями в облаке с устройством» (C2DM).

Обновление: также обратите внимание, что даже если отключить политику спящего режима Wi-Fi, когда экран выключен, он обычно не отключает Wi-Fi напрямую, а немного ждет. Я думаю, что это зависит от модели телефона, но около 5-15 минут.

Обновление 2: Gmail (или push-канал) также может периодически включать Wi-Fi, конечно, даже если у вас отключена политика спящего режима Wi-Fi в режиме ожидания. Вы, конечно, тоже можете это сделать, но, пожалуйста, будьте очень осторожны с временем автономной работы, если это так. Если вы используете push-уведомления, это обрабатывается за вас и координируется для повышения энергоэффективности.

person Mattias Isegran Bergander    schedule 06.05.2012
comment
Обновлены сведения о настройках политики сна Wi-Fi, может быть, это так? - person Mattias Isegran Bergander; 06.05.2012
comment
Является ли AlarmManager способом, которым Gmail временно пробуждает Wi-Fi? - person AndroidDev; 06.05.2012
comment
Я не знаю, делает ли это приложение Gmail, или оно вообще заботится об этом, или просто позволяет каналу push-данных обрабатывать это. Но AlarmManager, безусловно, хороший способ периодически что-то делать. Опять же, если вы это сделаете, будьте осторожны с уровнем заряда батареи наших телефонов. Это верный способ получить плохие отзывы, если он разряжает батарею. Другой способ может заключаться в том, чтобы подключиться к другим, пробуждающим Wi-Fi, прослушивать сетевое соединение: .com/questions/1783117/network-listener-android - person Mattias Isegran Bergander; 06.05.2012
comment
По поводу ссылки, которую вы разместили. Я пробовал этот код ранее. Он сообщит о сетевом подключении при выходе из спящего режима, когда его нет. Кроме того, я не хочу обнаруживать сетевое подключение. Я хочу установить один. - person AndroidDev; 06.05.2012
comment
Это была просто идея сделать его более энергоэффективным, поскольку это является серьезной проблемой. Довольно неэффективно, если 20 разных приложений просто используют свои собственные интервалы таймера, чтобы проснуться и установить соединение, вместо того, чтобы сотрудничать. Но, конечно, можно приобрести блокировку Wi-Fi. Полный пример приведен здесь: goltermann.cc/2011/11/ - person Mattias Isegran Bergander; 06.05.2012

Получите блокировку Wi-Fi, на которую не повлияет политика сна пользователя Wi-Fi, однако обязательно подождите/задержите/переведите в спящий режим перед выполнением функции, требующей Wi-Fi, потому что устройству потребуется время для фактического подключения к сети, прежде чем оно будет полезно. Снимите блокировку Wi-Fi, когда закончите, но опять же, срок службы батареи пострадает. Пользователи очень заинтересованы в блокировках пробуждения/блокировках Wi-Fi, поэтому добавьте много предупреждений.

person gauglerb    schedule 20.05.2013
comment
Получите блокировку Wi-Fi, на которую не повлияет политика сна пользователя Wi-Fi. Это где-то задокументировано? или просто наблюдение? - person Ahmed; 14.02.2014
comment
Наблюдение... Возможность программно получить блокировку Wi-Fi будет предоставлена ​​​​разрешением Android. - person gauglerb; 18.02.2014