Android MediaPlayer、SeekBar 更改时出现异常 activity
Android MediaPlayer, SeekBar Exception when change activity
我目前正在开发具有音频播放功能的 android 应用程序。在 play_pause Activity 中,我有一个搜索栏和一个控制音频的按钮。
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);
}
});
}
}
当我在没有点击 "play" 按钮的情况下按下后退按钮时,我的应用程序可以成功更改 activity。但是,一旦单击 "play" 按钮,我就无法更改 activity。下面是 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()
有人知道如何解决吗?
也可以通过调用
来取消 Activity 的定时器 onDestroy
mTimer.cancle();
由于调用 player.getCurrentPosition() 而引发异常;在 Activity 销毁时释放媒体播放器实例后,您的计时器线程不会停止。
我目前正在开发具有音频播放功能的 android 应用程序。在 play_pause Activity 中,我有一个搜索栏和一个控制音频的按钮。
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);
}
});
}
}
当我在没有点击 "play" 按钮的情况下按下后退按钮时,我的应用程序可以成功更改 activity。但是,一旦单击 "play" 按钮,我就无法更改 activity。下面是 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()
有人知道如何解决吗?
也可以通过调用
来取消 Activity 的定时器 onDestroymTimer.cancle();
由于调用 player.getCurrentPosition() 而引发异常;在 Activity 销毁时释放媒体播放器实例后,您的计时器线程不会停止。