Почему моя панель уведомлений исчезает при попытке переделать ее после простоя? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть уведомление управления мультимедиа на экране блокировки, которое является службой переднего плана при воспроизведении мультимедиа и переводится в фоновую службу, когда воспроизведение мультимедиа приостановлено с использованием stopForeground(false):

lockscreen

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

lockbar2

Этот код вызывается при приостановке носителя:

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");

Почему он так себя ведет? Уведомление существует до тех пор, пока я не попытаюсь обновить значок, после чего он самоуничтожается и не воссоздает.

...