Добрый день, ситуация:
Я разрабатываю приложение для Android, которое служит спортивным трекером / навигационным приложением, поэтому для него требуется постоянное подключение к GPS, а также постоянное бодрствующее устройство. Запись ведется каждую секунду.
Текущее решение, работающее годами, благодаря wakelocks
тому, что устройство не спит.
Режим Doze в Android 6.0+ усложняет ситуацию, но это не так.
На аппарате Huawei наверное другой тип оптимизации.
Вот часть журнала:
10-10 10:33:18.462 1014-384 D/PFW.HwPFWAppWakeLockPolicy: getUidWakeLock uid: 10097 wakelock >= 10 mins
10-10 10:33:18.543 1014-384 D/PFW.HwPFWAppWakeLockPolicy: force stop abnormal wakelock app uid: 10097
10-10 10:33:18.558 1014-384 I/ActivityManager: Force stopping menion.android.locus appid=10097 user=0: from pid 1014
Так что после прибл. 30+ минут, система просто решает, что приложение использует слишком много wakelocks
, и полностью завершает его со всеми службами, историей, просто kill
.
Любой опыт с таким поведением и любые предложения, как лучше решить эту простую задачу (постоянная запись местоположения GPS при выключенном экране)?
Как я писал при запуске, на всех остальных устройствах, кроме нового Huawei, такая система исправно работает много лет.
РЕДАКТИРОВАТЬ: примечание после комментария одного пользователя (удалено?), приложение «белого списка» в диспетчере батарей Huawei (помечено как «защищенное приложение») не влияет на эту проблему.