Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 服务无法运行两次_Android_Service_Media Player - Fatal编程技术网

Android 服务无法运行两次

Android 服务无法运行两次,android,service,media-player,Android,Service,Media Player,我正在制作一个带有服务的音乐播放器,但当我单击音乐列表中的一首歌曲时,音乐开始时没有错误,但如果我返回列表并单击另一首,我将尝试调用getDuration,但没有有效的mediaplayer错误-38,0 服务中的My onStart方法: @Override public void onStart(final Intent i, int startid) { Log.d(TAG, "Start music"); re = 0; songUrl = i.getData

我正在制作一个带有服务的音乐播放器,但当我单击音乐列表中的一首歌曲时,音乐开始时没有错误,但如果我返回列表并单击另一首,我将尝试调用getDuration,但没有有效的mediaplayer错误-38,0

服务中的My 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();

}
我使用startServicei启动服务;我已经设置了一个music.setOnPreparedListener,这样就不会提前运行任何程序


如何使其工作?

再次调用prepare之前,请尝试调用reset方法。
另外,如果您正在调用prepare而不是prepareAsync,我不明白您为什么需要使用prepared侦听器。

我正在调用reset before prepare。。?在我调用like music.getDuration之前,我需要准备好的侦听器确保音乐已经准备好,否则我会出错。