Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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 媒体播放器突然停止,logcat中出现警告:TimedEventQueue(33):队列中未找到事件4,是否已取消?_Android_Media Player - Fatal编程技术网

Android 媒体播放器突然停止,logcat中出现警告:TimedEventQueue(33):队列中未找到事件4,是否已取消?

Android 媒体播放器突然停止,logcat中出现警告:TimedEventQueue(33):队列中未找到事件4,是否已取消?,android,media-player,Android,Media Player,我正在尝试将背景音乐放入我的应用程序中。我创建了一个intent服务,它创建了一个媒体播放器并启动音乐 一旦我的应用程序启动,音乐只会播放一秒钟,之后我会在我的logcat中看到以下警告:- 09-13 20:12:54.082:WARN/TimedEventQueue(33):队列中未找到事件4,是否已取消 每次运行我的应用程序时,事件编号都会发生变化。这次是事件5 下面是实现媒体播放器的我的服务类:- import android.app.IntentService; import andr

我正在尝试将背景音乐放入我的应用程序中。我创建了一个intent服务,它创建了一个媒体播放器并启动音乐

一旦我的应用程序启动,音乐只会播放一秒钟,之后我会在我的logcat中看到以下警告:-

09-13 20:12:54.082:WARN/TimedEventQueue(33):队列中未找到事件4,是否已取消

每次运行我的应用程序时,事件编号都会发生变化。这次是事件5

下面是实现媒体播放器的我的服务类:-

import android.app.IntentService;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.widget.Toast;

public class MusicService extends IntentService {

    MediaPlayer mPlayer;
    private OnErrorListener mErrorListener;

    public MusicService() {
        super("MusicService");
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub
          // Normally we would do some work here, like download a file.


    }   

    ///////////////////////////////////////////////////////////

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

    {
        Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
        mPlayer.setLooping(true);
        mPlayer.start();

        return super.onStartCommand(intent,flags,startId);


    }

    @Override

    public void onCreate ()

    {
        super.onCreate();
      //  try{
            mPlayer = MediaPlayer.create(this, R.raw.jingle);
        //}catch (IllegalArgumentException e) {
            //e.printStackTrace();
        //}catch (IllegalStateException e ) {
            //e.printStackTrace();
        //}

        if(mPlayer!= null)
        {
            mPlayer.setLooping(true); // Set looping
            mPlayer.setVolume(100,100);
        }


    mPlayer.setOnErrorListener(new OnErrorListener() {

        public boolean onError(MediaPlayer mp, int what, int extra) {
            // TODO Auto-generated method stub
            onPlayError();
            return true;
        }

    });


    }

    private void onPlayError() {
        Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show(); 
        if(mPlayer != null)
        {
            try{
                mPlayer.stop();
                mPlayer.release();
            }finally {
                mPlayer = null;
            }
        }
    }

    @Override
    public void onDestroy ()

    {
        super.onDestroy();
        if(mPlayer != null)
        {
            try{
                mPlayer.stop();
                mPlayer.release();
            }finally {
                mPlayer = null;
            }
        }

    }



}

我得到了解决方案。问题是,因为我使用的是意图服务,所以在以意图启动服务后,玩家启动了,但在销毁时立即被调用,其中有一个代码来释放和停止玩家


删除该代码后,我可以看到音乐不断播放,而且我没有看到那些定时队列警告

是的,很明显!我犯了完全相同的错误。如果应用程序停止,你在哪里重新定位代码来清理音乐播放器?在服役?