Почему на Musi c Services в android никогда не влияет дремлющий режим? - PullRequest
0 голосов
/ 06 августа 2020

Кто-нибудь, пожалуйста, объясните мне на техническом уровне, почему служба musi c плеера работает постоянно при выключенном экране и никогда не зависит от режима сна? Я хочу создать службу на аналогичной основе, но она должна выполнять определенную задачу каждые 20 секунд непрерывно.

Я был бы рад, если бы кто-нибудь мог это объяснить.

Заранее спасибо.

1 Ответ

1 голос
/ 06 августа 2020

Служба проигрывателя musi c работает как «служба переднего плана».

Службы переднего плана по большей части не зависят от дремоты при использовании в сочетании с частичной блокировкой пробуждения:

Назначение WakeLock в современных условиях Android?

Если вашему приложению необходимо создать службу переднего плана, когда приложение находится в фоновом режиме:

ContextCompat.startForegroundService()

Внутри службы, продвиньте ее на передний план и опубликуйте уведомление, позвонив:

startForeground()

Из Android docs: «Служба переднего плана выполняет некоторую операцию, которая заметна пользователю. Например, аудио приложение будет использовать службу переднего плана для воспроизведения звуковой дорожки. Службы переднего плана должны отображать уведомление. Службы переднего плана продолжают работать, даже если пользователь не взаимодействует с приложением. "

https://developer.android.com/guide/components/services

Как правило, приложение musi c меняет уведомление службы переднего плана с «обязательства», которое раздражает пользователя, на актив, отображая изображение t Исполнитель, текущая дорожка и кнопки мультимедиа, такие как воспроизведение / пауза / перемотка назад / вперед.

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

Вместо этого попробуйте использовать WorkManager, JobScheduler или Firebase Cloud Messaging, чтобы вывести устройство из спящего режима только при необходимости.

Выполняйте частые задачи с помощью Work Manager API

Но с этими решениями невозможно будет «опросить» или запустить ваш код каждые 20 секунд. Вам действительно нужно найти решение, которое работает с "Doze", вместо того, чтобы бороться с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...