У меня есть уведомление управления мультимедиа на экране блокировки, которое является службой переднего плана при воспроизведении мультимедиа и переводится в фоновую службу, когда воспроизведение мультимедиа приостановлено с использованием stopForeground(false)
:
Я настроил его таким образом, чтобы пользователь мог смахнуть или отклонить уведомление, когда воспроизведение мультимедиа приостановлено. По большей части это работает нормально - однако, если вы приостановите воспроизведение и оставите его в бездействии в течение длительного периода времени, нажатие кнопки воспроизведения на приведенном выше уведомлении приводит к такому поведению:
Этот код вызывается при приостановке носителя:
if (mediaManager == null) {
mediaManager = MediaManager.getInstance();
}
lockView.setImageViewResource(R.id.lock_bar_play, R.drawable.ic_action_play);
notiView.setImageViewResource(R.id.status_bar_play, R.drawable.ic_action_play);
startForeground(FOREGROUND_SERVICE, notification);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
stopForeground(STOP_FOREGROUND_DETACH);
else
stopForeground(false);
... и этот код вызывается после нажатия play:
if (mediaManager == null) {
mediaManager = MediaManager.getInstance();
}
lockView.setImageViewResource(R.id.lock_bar_play, R.drawable.ic_player_pause);
notiView.setImageViewResource(R.id.status_bar_play, R.drawable.ic_player_pause);
startForeground(FOREGROUND_SERVICE, notification);
Log.i(TAG, "Clicked Play");
Почему он так себя ведет? Уведомление существует до тех пор, пока я не попытаюсь обновить значок, после чего он самоуничтожается и не воссоздает.