Почему в Android 8.0 на экране блокировки исчезает уведомление сервиса, запущенного в режиме foreground?

Запускаю сервис как foreground, соответственно, появляется его нескрываемое уведомление. Но на экране блокировки уведомление исчезает, и вместо него появляется системное уведомление: "App is running in the background. Tap for details..."

Это творится только в Android 8.0, в 8.1 уведомление снова на месте. Игры с CATEGORY, VISIBILITY, PRIORITY для уведомления и IMPORTANCE с setLockscreenVisibility() для его канала ничего не дали. Лечится ли этот косяк в 8.0?
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
VDG
@VDG Автор вопроса
Оказался баг студии, конкретнее связки: Instant Run и Build Cache.

Случайно обратил внимание, что уведомление выводится с низким приоритетом IMPORTANCE_MIN, хотя в исходнике стоит IMPORTANCE_DEFAULT. То есть, на устройстве работал старый неактивный код, с когда-то использованным IMPORTANCE_MIN. И, соответственно, уведомление сервиса не выводилось на экран блокировки.

Замечу, что пересборка проекта ни к чему не приводила, так же как и удаление канала уведомления и самого приложения. Instant Run упорно брал из кеша старый мёртвый код с IMPORTANCE_MIN и заливал его на устройство как только что скомпилированный. Причём глючил кеш только на 8.0, что ещё больше запутывало. Короче, помогла только очистка этого кеша.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы