android mediaplayer带进度条播放点击返回时候出现IllegalStateException
当我点击返回时候128行设置进度条值时候就出现IllegalStateException。请高手帮忙分析。代码:
th = new Thread(new Runnable(){
@Override
public void run() {
while(true){
progressBar.setProgress(mediaPlay.getMediaPlayer().getCurrentPosition()); //128行此行异常 获得当前播放的进度值
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}});
th.start();
} catch (Exception e) {
th.stop();
e.printStackTrace();
}
返回键事件
//当按下返回把mediaplay销毁
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == event.KEYCODE_BACK) {
progressBar=null;
mediaPlay.stop();
MediaPlayer mediaplayer = mediaPlay.getMediaPlayer();
mediaplayer = null;
th.yield();
return true;
}
return super.onKeyDown(keyCode, event);
}
01-10 02:41:44.900: ERROR/AndroidRuntime(921): java.lang.IllegalStateException
at android.media.MediaPlayer.getCurrentPosition(Native Method)
at com.zyt.systravel.activity.ExplainMediaActivity$1$2.run(ExplainMediaActivity.java:128)
at java.lang.Thread.run(Thread.java:1060)
--------------------编程问答-------------------- progressBar.setProgress 好像在需要在创建窗口的那个线程中调用才行。 --------------------编程问答-------------------- 在progressBar的监听事件中处理(onProgressChanged) --------------------编程问答-------------------- mediaPlay.stop();
必须在mediaPlay.isPlaying()返回true时才能执行stop,否则Logcat里可以看到报error,但不影响运行。 --------------------编程问答-------------------- progressBar.setProgress(mediaPlay.getCurrentPosition());
这样可以吗?
另外:更新UI必须在UI线程里才能调用 --------------------编程问答-------------------- 我也是遇到这个问题,求解答
补充:移动开发 , Android