Подтвердить что ты не робот

Может ли Wi-Fi или CPU переходить в режим сна, когда экран включен?

На Android есть WakeLock и WifiLock, но нужны ли они, если мой экран никогда не отключается?

Я использую постоянные соединения (например, WebSockets) в течение нескольких десятков минут или даже часов. Будет ли мой экран всегда включенным, чтобы устройство не потеряло эти соединения (если мы предположим, что соединение остается доступным, а сервер в порядке)?

Чтобы включить экран, я использую стандартный способ:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Что говорят документы:

Чтобы избежать разряда батареи, устройство Android, которое осталось без работы, быстро засыпает.

(https://developer.android.com/training/scheduling/wakelock.html)

Обычно радио Wi-Fi может отключиться, когда пользователь не использовал устройство через некоторое время.

(http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html)

Означает ли это, что...

Wi-Fi-радио или CPU могут перейти в спящий режим или выключиться, если пользователь не будет взаимодействовать с устройством в течение более длительного времени (даже если экран все еще включен)?

И, более конкретно, может ли фоновая задача (например, IntentService) Wi-Fi или мобильное соединение для передачи данных переходить в спящий режим, когда есть еще Activity, на котором хранится экран?

4b9b3361

Ответ 1

Может ли Wi-Fi или CPU переходить в режим сна, когда экран включен?

Нет.

На Android есть WakeLocks и WifiLocks, но нужны ли они мне, если мой экран никогда не отключается?

Я не совсем понимаю, как ваш экран никогда не выключается. В конце дня всегда участвует AFAIK, a WakeLock. Нужен ли вам WakeLock или управляется ли это WakeLock классами framework (например, android:keepScreenOn) или ОС (например, параметр "Параметры" для включения экрана) будет зависеть от того, что вы делаете.

Я никогда не видел, чтобы устройство Android отключило Wi-Fi, пока экран включен (а не на экране блокировки). Я не могу исключить возможность отключения Wi-Fi из-за низкого уровня заряда батареи в экстремальном энергосберегающем режиме производителя.

Будет ли мой экран всегда включен, чтобы предотвратить потерять эти устройства (если мы предположим, что соединение остается доступным, а сервер в порядке)?

Я бы назвал это более подробно, так как "сохранение экрана поможет". Или, что лучше, если устройство перейдет в спящий режим, обычно будут отключены ваши соединения WiFi.

Чтобы включить экран, я использую стандартный способ: getWindow(). addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Это означает, что вы используете WakeLock. Просто так случается, что для вас это управляется, и поскольку вы не можете его испортить, вам не нужно разрешение WAKE_LOCK.

Wi-Fi-радио или CPU могут перейти в спящий режим или выключиться, если пользователь не будет взаимодействовать с устройством в течение более длительного времени (даже если экран все еще включен)?

Для обычного устройства нет. Я не могу исключить, что какой-то производитель делает какую-то вещь, которая может иметь такое поведение.

И, более конкретно, может ли фоновая задача (например, IntentService) Wi-Fi или мобильное подключение к данным переходить в спящий режим, когда еще есть действие, которое поддерживает экран?

Не следует. В частности, мобильное соединение для передачи данных никогда не переходит в режим сна.


Все это говорит о том, что надежность того, что вы делаете, будет сосать, если это не полностью контролируемая среда. Вы делаете много предположений:

  • Какой-то постоянный источник питания

  • Никто не возится с устройством, чтобы переместить вашу деятельность на задний план или кнопку BACK из нее

  • Никто не возится с сетью WiFi, либо вообще, либо суетливый с настройками на устройстве (например, помещая его в режим самолета)

  • Etc.

Если это какой-то монитор промышленного процесса или устройство в киоске, вероятность того, что вы полностью контролируете эти вещи, приличная, но не большая. Вы намного превосходите это, и вероятность того, что эти вещи быстро задерживают хвост,


Есть ли у вас какие-либо ссылки?

В идеальном мире все это будет прекрасно задокументировано, будет мир между всеми народами, и Хейли Атвелл подумает, что я порядочный человек.

Это не идеальный мир.

Этот материал не только не документирован, но и зависит от производителей устройств. Поэтому, если это не контролируемая среда очень, хотя вы можете попытаться получить такое поведение, реальный мир очень запутан, и вы не должны предполагать, что вы можете поддерживать соединение открытым до бесконечности.

Ответ 2

Ну, cpu не войдет в глубокий сон, если экран включен. Flag держать экран на более умный способ сохранить экран вместо блокировки бодрствования, чтобы сэкономить время автономной работы. пройти следующую ссылку и прочитать в том, что прочитал комментарий г-на Хакборнса

https://groups.google.com/forum/#!searchin/android-developers/flag_keep_screen_on$20wake$20locks/android-developers/Tg7_sUL8Ec4/sI6ayb5yzigJ

У Wi-Fi есть опция политики сна в системе → wifi- > advance. В том случае, если он всегда включен, он не переходит в спящий режим.