Удаление уведомления через сервис Android

В музыкальном приложении есть сервис Service MusicService. Он проигрывает трек и создает уведомление (ну как и во всех плеерах, с кнопками паузы, вперед, назад). Вот код:

public class MusicService extends Service implements Playable {
public static ArrayList<Track> trackList;
NotificationManager notificationManager;
MediaPlayer mediaPlayer;
private final Handler handler = new Handler();

public int playingPos, trackPos;
public boolean isRepeating = true;

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    createChannel();

    registerReceiver(broadcastReceiver, new IntentFilter("TRACKS_TRACKS"));

    trackList = intent.getParcelableArrayListExtra("TRACKLIST");

    trackPos = 12;
    prepareUpdater(trackList.get(trackPos));

    return START_STICKY;
}

/*Остальной код*/

@Override
public void onDestroy() {
    super.onDestroy();

    notificationManager.cancelAll();   //Проблема здесь
    unregisterReceiver(broadcastReceiver);

    if(mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.release();
    }
}
}

Суть в том, что бы при остановке работы сервиса (закрытие приложения), уведомление удалялось (notificationManager.cancelAll();) в onDestroy(). И здесь происходят очень странные вещи, при отладке с первым запуском вроде как уведомление убирается, но второй и последующие запуски (уже не через студию) не дают нужного результата, и уведомление не убирается. Через раз устройство показывает, что таки ошибка есть. Вроде как дело в том, что это всё делается через сервис, но решения я так и не смог найти.


Ответы (1 шт):

Автор решения: Svetl9chok

Ну ошибка скорее всего здесь

intent.getParcelableArrayListExtra("TRACKLIST");
return START_STICKY;

Так как при START_STICKY Сервис при перезапуске вернет intent = null

→ Ссылка