Предотвращение уничтожения сокетов NetD, когда устройство Android не заряжается —

Пользователи Android Marshmallow и Nougat иногда сообщают, что Netd уничтожает сокеты, когда их устройство не заряжается. Часто Logcat будет отображать что-то вроде этого:

06-23 12: 38: 17.576 522 2676 I Netd: уничтожено 3 сокета для UidRanges {10000-2147483647} skip = {1001 1027 10010 10013 10018 10021 10035 10037 10064 10081} за 1,2 мс

Это на самом деле невероятно просто исправить, настолько просто, что подпадает под «слепоту невнимательности» — выполнение устранения неполадок с глубоким методом при отсутствии чего-либо на виду. По правде говоря, виновником этой проблемы является функция Android Doze, представленная в Marshmallow 6.0 и обновленная в Nougat.

Режим ожидания активируется, когда устройство остается без изменений в течение некоторого времени. Когда Doze активируется, ваше устройство делает следующее:

  • Доступ к сети приостановлен.
  • Система игнорирует следы блокировки.
  • Стандартные тревоги AlarmManager (включая setExact () и setWindow ()) откладываются до следующего окна обслуживания.
  • Если вам нужно установить сигналы тревоги, которые срабатывают в режиме Doze, используйте setAndAllowWhileIdle () или setExactAndAllowWhileIdle ().
  • Сигналы тревоги, установленные с помощью setAlarmClock (), продолжают срабатывать в обычном режиме — система выходит из режима Doze незадолго до срабатывания этих сигналов.
  • Система не выполняет сканирование Wi-Fi.
  • Система не позволяет работать адаптерам синхронизации.
  • Система не позволяет запускать JobScheduler

Итак, у вас есть два варианта:

Вариант 1. Адаптируйте свои приложения к Doze с помощью разрешений белого списка.

Вы можете вручную настроить белый список в Настройки> Аккумулятор> Оптимизация аккумулятора. Кроме того, система предоставляет приложениям возможность запрашивать у пользователей их белый список.

Приложение может запустить ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS намерение, чтобы привести пользователя непосредственно к Оптимизация батареи, где они могут добавить приложение.

Приложение, обладающее разрешением REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, может вызвать системное диалоговое окно, позволяющее пользователю добавить приложение в белый список напрямую, не переходя в настройки. Приложение запускает ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent для запуска диалога.

Вариант 2: полностью отключить Doze на вашем устройстве — не рекомендуется, но это ваш телефон

Загрузите приложение «Редактор настроек Doze» на свое устройство, запустите его и установите следующие параметры:

  1. Отключение идентификатора устройства dumpsys
  2. idle_to 1
  3. max_idle_to 1

Полное объяснение параметров редактора настроек Doze:

Тайм-аут неактивного — inactive_to
Это время, после того как мы стали неактивными, и мы начинаем смотреть на датчик движения, чтобы определить, оставлено ли устройство в покое. Мы не делаем это сразу после отключения, просто потому, что не хотим постоянно запускать датчик значительного движения, когда экран выключен.
Sensing Timeout — sensing_to
Если мы не получим обратный вызов от AnyMotion за это время + locating_to, мы изменим с STATE_SENSING на STATE_INACTIVE, и любые обратные вызовы AnyMotion, не входящие в STATE_SENSING, будут игнорироваться.
Тайм-аут локации — locating_to
Вот как долго мы будем ждать, чтобы попытаться исправить положение, прежде чем перейти в режим ожидания.
Точность местоположения — точность местоположения
Желаемая максимальная точность (в метрах), мы считаем, что это место достаточно хорошее, чтобы перейти в режим ожидания. Мы будем пытаться получить исправление точности по крайней мере до тех пор, пока не истечет locating_to.
Тайм-аут неактивного движения — motion_inactive_to
Это время, после того, как мы видим движение, которое мы ждем после того, как становимся неактивными, пока не начнем снова искать движение.
Время простоя после неактивного таймаута — idle_after_inactive_to
Это время, после истечения неактивного тайм-аута, которое мы будем ждать в поисках значительного движения, пока мы действительно не сочтем устройство бездействующим.
Тайм-аут ожидания ожидания — idle_pending_to
Это начальный момент после простоя, когда мы позволим себе вернуться в состояние IDLE_PENDING, позволяя системе нормально работать, пока мы не вернемся в режим ожидания.
Максимальный тайм-аут ожидания ожидания — max_idle_pending_to
Максимальное время ожидания (время, потраченное на бег), которое нам будет разрешено использовать.
Фактор ожидания ожидания — idle_pending_factor
Коэффициент масштабирования, применяемый к текущему ожидающему времени простоя каждый раз, когда мы переходим через это состояние.
Время ожидания простоя — idle_to
Это начальное время, когда мы хотим сидеть в режиме ожидания, прежде чем снова проснуться, чтобы вернуться в режим ожидания и позволить нормальной работе работать.
Максимальное время простоя — max_idle_to
Максимальная продолжительность простоя нам будет разрешено использовать.
Фактор простоя — idle_factor
Коэффициент масштабирования, применяемый к текущему времени ожидания простоя каждый раз, когда мы переходим через это состояние.
Минимальное время до тревоги — min_time_to_alarm
Это минимальное время, которое мы дадим до следующего будильника для нас, чтобы фактически перейти в режим ожидания.
Длительность белого списка приложения Max Temp — max_temp_app_whitelist_duration
Максимальное количество времени для временного внесения в белый список приложения, когда оно получает высокую задержку.
Длительность белого списка приложения MMS Temp — mms_temp_app_whitelist_duration
Время, которое мы хотели бы внести в белый список приложения, которое получает MMS.
Длительность белого списка приложения SMS Temp — sms_temp_app_whitelist_duration
Время, которое мы хотели бы внести в белый список приложения, которое получает SMS.

Ссылка на основную публикацию
Adblock
detector