繁体   English   中英

Android MediaPlayer,更改活动时SeekBar异常

[英]Android MediaPlayer, SeekBar Exception when change activity

我目前正在开发具有音频播放功能的android应用程序。 在play_pause活动中,我有一个搜索栏和一个控制音频的按钮。

public class PlayerActivity extend AppCompatActivity {
    ...
    ...
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        playerButton = (Button) findViewById(R.id.playButton);

        playerButton.setOnClickListener(new Button.setOnClickListener() {
                if (player != null) {
                     //load music to player
                     player.create(PlayerActivity.this, R.raw.music);
                     seekbar.setMax(player.getDuration());

                     mTimer = new Timer();
                     mTimerTask = new TimerTask() {
                         public void run() {
                             seekbar.setProgress(player.getCurrentPosition());;
                         }
                     };
                     mTimer.schedule(mTimerTask, 0, 10);
                }
        });
    }
}

当我按下后退按钮而不点击“播放”按钮时,我的应用程序可以成功更改活动。 但是,一旦单击“播放”按钮,我将无法更改活动。 下面是onDestroy()方法。

protected void onDestroy() {
    super.onDestroy();
    player.release();
}

Logcat的错误消息是

java.lang.IllegalStateException
at MediaPlayer.getCurrentPosition()
at PlayerActivity.run() //which is the mTimerTask
at java.util.Timer$TimerImpl.run()

有人知道如何解决吗?

也可以通过致电取消您的计时器onDestroy活动

mTimer.cancle();

由于调用player.getCurrentPosition()引发异常。 释放媒体播放器实例后,由于计时器线程停止,Activity销毁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM