Как запретить Huawei и Android убивать приложения в фоновом режиме?

Huawei

ОБНОВЛЕНИЕ: Похоже, что на EMUI 9+ (Android P +) компания Huawei представила новое приложение-убийцу задач под названием PowerGenie, которое убивает все, что не занесено в белый список от Huawei, и не предоставляет пользователям никаких параметров конфигурации. Смотрите ниже, как удалить его.

Традиционно Huawei и его надстройка Android под названием EMUI относятся к наиболее проблемным на рынке в отношении нестандартных ограничений фонового процесса. Для этих расширений нет API и документации. В настройках по умолчанию фоновая обработка просто не работает должным образом, а приложения, работающие в фоновом режиме, вылетают.

В некоторых версиях EMUI (мы знаем о EMUI 4 в и у нас есть некоторые отчеты о EMUI 5, а теперь и о последнем EMUI 9) никакие доступные пользователю настройки не могут помешать системе прервать фоновую обработку дольше, чем 60 минут. Это делает злая пользовательская служба под названием HwPFWService (а в EMUI 9 это называется PowerGenie), разработанная и поставляемая вместе с EMUI компанией Huawei.

Решение для пользователей

Телефоны Huawei обычно имеют несколько механизмов энергосбережения. Кроме того, у вас может не быть PowerGenie на вашем телефоне, но ваши приложения все равно могут быть убиты другим механизмом.

Устройства EMUI 9+

Huawei чрезвычайно изобретательна в взломе приложений на своих устройствах. Похоже на Android Pie, в дополнение ко всем нестандартным мерам управления питанием, описанным ниже, они внедрили новую сборку приложений-убийц прямо в EMUI 9.

Она называется PowerGenie, и вы не можете добавлять пользовательские приложения в их предварительно определенный белый список. Это означает, что нет другого способа исправить надлежащую функциональность приложения на Huawei, кроме удаления PowerGenie.

К сожалению, это системное приложение, которое можно полностью удалить только с помощью ADB (Android Debug Bridge).

Вам нужно:

  1. Установите ADB на свой компьютер
  2. Подключите телефон с помощью кабеля для передачи данных
  3. Включите параметры разработчика
  4. Включите отладку по USB в параметрах разработчика на вашем телефоне
  5. Выполните следующие команды на вашем компьютере:

adb shell pm uninstall --user 0 com.huawei.powergenie

Мы еще не подтвердили это, но, возможно, вы можете просто отключить PowerGenie в «Настройки телефона» > «Приложения», но этот параметр необходимо применять каждый раз при перезагрузке устройства.

Устройства EMUI 6+ (и некоторые устройства EMUI 5)

  • Настройки телефона > Расширенные настройки > Диспетчер батареи > План электропитания установлен на Производительность (Phone settings > Advanced Settings > Battery manager > Power plan is set to Performance)
  • Настройки телефона > Расширенные настройки > Диспетчер батареи > Защищенные приложения — выберите приложение как Защищенное (Phone Settings > Advanced Settings > Battery Manager > Protected apps – check for your app as Protected)
  • Настройки телефона> Приложения> Ваше приложение> Батарея> Энергосберегающая подсказка [x] и Продолжить работу после выключения экрана [x] (Phone Settings > Apps > Your app > Battery > Power-intensive prompt [x] and Keep running after screen off [x])
  • Настройки телефона > Приложения > Дополнительно (внизу) > Игнорировать оптимизации > Нажмите Разрешено > Все приложения > Найдите приложение в списке и выберите Разрешить (Phone settings > Apps > Advanced (At the bottom) > Ignore optimisations > Press Allowed > All apps > Find your app on the list and set to Allow)

Huawei P9 Plus

Настройки телефона > Приложения > Настройки > Специальный доступ > Игнорировать оптимизацию батареи > выберите Разрешить для вашего приложения (Phone settings > Apps > Settings > Special access > Ignore battery optimisation > select allow for your app)

Huawei P20

Настройки телефона> Аккумулятор> Запуск приложения, а затем установите для своего приложения «Управление вручную» и убедитесь, что все включено (Phone settings > Battery > App launch and then set your app to “Manage manually” and make sure everything is turned on)

Huawei Honor 9 Lite, Huawei Mate 9 Pro

Настройки телефона > Аккумулятор > Запустите, а затем установите приложение в «Управление вручную» и убедитесь, что все включено (Phone settings > Battery > Launch and then set your app to “Manage manually” and make sure everything is turned on).

В EMUI 4 это не работает.

Решение для разработчиков

EMUI 4

На EMUI 4 Huawei реализовал злой сервис под названием HwPFWService. В вашем adb logcatвы можете увидеть сообщение как:

[ 05-25 18:10:17.167 4230:16683 D/PFW.HwPFWAppWakeLockPolicy ] getUidWakeLock uid: 10185 wakelock >= 10 mins

[ 05-25 18:10:17.249 4230:16683 W/PFW.HwPFWAppWakeLockPolicy ] uid: 10185 wakelock > 60 mins

[ 05-25 18:10:17.249 4230:16683 D/PFW.HwPFWAppWakeLockPolicy ] force stop abnormal wakelock app uid: 10185

Хорошей новостью является то, что для того, чтобы не убить себя или другие сервисы Huawei / Honor, перед тем как убить приложение, hwPfwService просматривает тег wakelock и, если тег является одним из жестко закодированных белых списков, он не убивает приложение , Белые теги Wakelock: «AudioMix», «AudioIn», «AudioDup», «AudioDirectOut», «AudioOffload» и «LocationManagerService».

Вот как вы можете обойти это в коде:

String tag = "com.my_app:LOCK";

if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M && Build.MANUFACTURER.equals("Huawei")) { tag = "LocationManagerService"; }

PowerManager.WakeLock wakeLock = ((PowerManager) getSystemService(Context.POWER_SERVICE)).newWakeLock(1, tag); wakeLock.acquire();

Решение проблемы на других смартфонах

Nokia на Android P убивает любой фоновый процесс

OnePlus и одно из самых серьезных ограничений работы фоновых процессов

Huawei cвоя оболочка EMUI и серьезные ограничения

Xiaomi и надстройка над Android под названием MIUI

Samsung использует грязную технику экономии заряда батареи

Meizu на Android завершает программы в фоновом режиме

Sony уничтожает ваши запущенные приложения с помощью Stamina

Asus не дает запускаться приложениям с помощью Power Master

Wiko смартфоны с проблемой

Lenovo решение проблемы

Для других производителей решение как запретить системе Android убивать приложения в фоновом режиме

Спасибо!

Теперь редакторы в курсе.