Я пытаюсь реализовать свой MediaPlayer в службе, и до сих пор все работало нормально. Однако есть один сценарий, в котором происходит сбой приложения.MediaPlayer в сервисе, вызывающем исключение IllegalStateException и сбой приложений
Вот сценарий:
- Я ищу художник, и отображается список с результатами
- я выбираю художник, и отображаются главные дорожки художника (на другую деятельности)
- Я нажимаю на дорожку, открывается мой диалог, моя служба запускается, и начинается воспроизведение песни.
- Я нажимаю кнопку «Назад», и «Диалог» уничтожается. Песня все еще играет.
- Я снова нажимаю кнопку «Назад», которая возвращает меня к экрану результатов работы художника. Песня перестает играть.
- Я выбрал другого (или того же) художника. Новый экран отображается с верхними дорожками.
- Когда я нажимаю на дорожку, ДОЛЖЕН делать то, что было раньше - откройте диалоговое окно DialogFragment и воспроизведите песню, однако приложение выйдет из строя.
В моем журнале говорится, что он был вызван вызовом IllegalStateException, когда я пытаюсь вызвать любой метод в экземпляре MediaPlayer в моей службе.
Это заставляет меня поверить, что Служба потеряла ссылку на MediaPlayer?
Это метод моего DialogFragment, который получит сервис после подключения к нему, а затем вызовет PlayTrack() на моей службе, которая сначала сбрасывает плеер (вот где происходит исключение), а затем воспроизводит песню.
private ServiceConnection mediaPlayerConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicBinder binder = (MusicBinder) service;
mMediaPlayerService = binder.getService();
mMediaPlayerService.setPlayList(mTracks);
mMediaPlayerService.setCurrentSong(currentTrack);
updateMediaPlayerViews();
mMediaPlayerService.playTrack();
isMediaPlayerBound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
isMediaPlayerBound = false;
}
};
Если вам нужна любая другая часть моего кода, пожалуйста, дайте мне знать.
Любая помощь была бы чрезвычайно оценена. Спасибо!