Что такое процесс Android «пепел» и как предотвратить его спящий режим в моем приложении?(Режим ожидания Android 7.0) - PullRequest
0 голосов
/ 07 июня 2018

Я написал приложение, которое должно просыпаться раз в минуту, если оно работает с использованием широковещательного приемника, объявленного в манифесте и запускаемого AlarmManager.setAlarmClock(), поскольку это единственное точное решение, которое работает на Android 7+ безограничения на повторение сигналов тревоги.

Мне кажется, что я следовал буквально всем подсказкам в сети (и особенно SO), чтобы мое приложение работало, но рано или поздно оно переносится на doze или состояние гибернации , хотя я включил в свое приложение свое белое имя с помощью Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS и использую блокировку пробуждения внутри приемника при планировании следующего аварийного сигнала.

Процесс, ответственный за "зависание"мое приложение " пепел ".Где я могу найти больше информации об этом процессе?Это зависит от ОС производителя?

Как отключить дремлющий / спящий режим моего приложения?Я не могу на всю жизнь заставить это проклятое приложение непрерывно работать .Любая подсказка приветствуется!

Используемое устройство - Huawei P8 lite 2017 с Android 7.0 .Так как исходный код стал довольно сложным, плюс, я думаю, я делаю все правильно с точки зрения кода, я не размещаю здесь никакого кода прямо сейчас.(Однако я предоставлю соответствующие примеры кода по запросу.)

Рассматриваемый вопрос, похоже, является общей проблемой самой ОС, так как я читал о многих людях, которые не понимают, как это работает.(Что смешно ... обменивать возможность установки точных таймеров на немного улучшенное время автономной работы. ПОЧЕМУ, Google?)

Следующий вывод в catlog показывает действие "ash";в этом случае оно заморозило мое приложение примерно на полчаса, после того, как оно работало должным образом в течение примерно получаса.Наверное, когда я снова включил и разблокировал телефон, приложение продолжило работать.

06-06 22:37:33.122 I/ash     ( 1772): de.paulwilhelm.limon send broadcast: notify package: de.paulwilhelm.limon, pid: -1
06-06 22:37:33.122 I/ash     ( 1772): screen off de.paulwilhelm.limon H to D, reason:bc_notify_
06-06 22:37:33.122 I/ash     ( 1772): de.paulwilhelm.limon { hibernation duration=60527 } transition to: doze reason:bc_notify_
06-06 22:37:33.155 I/ash     ( 1772): Unfreeze de.paulwilhelm.limon OK !
06-06 22:37:33.160 I/ash     ( 1772): unproxy de.paulwilhelm.limon broadcast OK !
06-06 22:37:33.167 I/ash     ( 1772): Unpending de.paulwilhelm.limon alarm OK !
06-06 22:37:33.169 I/ash     ( 1772): unproxy app:de.paulwilhelm.limon,uid:10118,result:true
06-06 22:37:33.175 I/ash     ( 1772): front app: de.paulwilhelm.limon goes to H
06-06 22:37:33.176 I/ash     ( 1772): ignore front app :de.paulwilhelm.limon screen off:523907ms
06-06 22:37:33.176 I/ash     ( 1772): de.paulwilhelm.limon  is front app
06-06 22:37:33.176 I/ash     ( 1772): ignore front app :de.paulwilhelm.limon screen off:523907ms
06-06 22:37:33.179 I/ash     ( 1772): de.paulwilhelm.limon { doze duration=10 } transition to: hibernation reason:
06-06 22:37:33.180 I/ash     ( 1772): Pending de.paulwilhelm.limon alarm OK !
06-06 22:37:33.181 I/ash     ( 1772): proxy de.paulwilhelm.limon broadcast OK !
06-06 22:37:33.183 I/ash     ( 1772): proxy app:de.paulwilhelm.limon,uid:10118,result:true
06-06 22:37:33.184 I/ash     ( 1772): Freeze de.paulwilhelm.limon OK !
06-06 22:37:33.185 I/ash     ( 1772): add listener de.paulwilhelm.limon net packet OK !,uid:10118
06-06 22:37:33.188 I/ash     ( 1772): has wakelock app: de.paulwilhelm.limon, uid: 10118

1 Ответ

0 голосов
/ 20 декабря 2018

Как сам пользователь HUAWEI, я также перенес этот процесс "пепел" и режим гибернации.Что определенно расширено (или, возможно, даже решено) - это использование службы переднего плана (что, вероятно, и вы делаете), повышая важность вашего уведомления для IMPORTANCE_MAX и , что наиболее важно , позволяя HUAWEI управлять мощностью вашего приложения вручную, зайдя в Настройки -> Аккумулятор -> Запустить.Найдите там свое приложение, нажмите на него, откройте все опции (которые также включают «Запуск в фоновом режиме») и дайте ему сказать «Управлять вручную».

Это то, что решило мою проблему, надеюсь, она решит и вашу..

...