Служба не может работать дважды - PullRequest
0 голосов
/ 10 декабря 2011

Я создаю музыкальный проигрыватель со службой, но когда я щелкаю песню в списке музыки, музыка запускается без ошибок, но если я возвращаюсь к списку и нажимаю другую, я получаю Attempt to call getDuration without a valid mediaplayer error (-38, 0)

Мой метод onStart в сервисе:

@Override
public void onStart(final Intent i, int startid) {
    Log.d(TAG, "Start music");

    re = 0;

    songUrl = i.getData().toString();

    streamMusic = new Thread() {
        public void run() {
            Looper.prepare();
            try {
                re = 1;
                music.reset();
                music.setDataSource(songUrl);
                music.prepare();

                this.interrupt();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    streamMusic.start();

}

Я запускаю службу с startService(i);, и я установил music.setOnPreparedListener, чтобы ничего не выполнялось раньше.

Как мне заставить это работать?

1 Ответ

0 голосов
/ 10 декабря 2011

Попробуйте вызвать метод reset () перед повторным вызовом prepare. Кроме того, если вы вызываете prepare (), а не prepareAsync (), я не понимаю, почему вам нужно использовать подготовленный слушатель.

...