На самом деле есть недокументированная команда оболочки, которую можно использовать для пакетов из белого списка, добавив их в глобальный location_background_throttle_package_whitelist
(я не проверял):
settings put global location_background_throttle_package_whitelist "package1,package2,package3"
^ этодля location
услуг, но могут быть и другие background_throttle
доступные настройки:
settings list global | grep background_throttle
Источник: Разработчики XDA .
Также в исходный код Я нашел только эти настройки:
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS
Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS
Документация ясно говорит о том, что определенные службы добавляются во временную 1023 * белый список.Чтобы узнать, что на самом деле заносит в эти списки эти сервисы, нужно было бы копать дальше.Эти фоновые ограничения службы фактически описаны в Context.java ... в то время как методы, отмеченные @UnsupportedAppUsage
, являются теми, которые используются только системой.
The Firebase WorkManager по-прежнему остается лучшим вариантом - или базовым JobIntentService , который по-прежнему будет работать как обычная фоновая служба O.Перепрошивка Android N
или Lineage OS 14.1
была бы определенным обходным решением, которое едва ли рассматривается.
Предположение, что разрешения root
будут предоставлять сверхдержавы, может быть ошибочным.Разрешение беспрепятственного доступа к местоположению все еще весьма ограничено, и даже собственные службы Google только временно занесены в белый список.Единственными службами, исключенными из этих фоновых ограничений на выполнение, будут системные службы Linux , написанные в C++
(которые работают вне JVM) - хотя это нечто иное, чем фоновые службы Android, написанные в Java
(которые работают внутри JVM и все расширяют один и тот же ограниченный класс Service
).