服务无法运行两次

时间:2011-12-10 16:55:01

标签: android service media-player

我正在制作一个带有服务的音乐播放器但是当我点击音乐列表中的一首歌时,音乐开始没有错误,但是如果我回到列表并点击另一个,我得到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 :(得分:0)

尝试再次调用prepare之前调用reset()方法。 此外,如果您正在调用prepare()而不是prepareAsync(),我不明白为什么您需要使用准备好的侦听器。