android使用mediaPlayer显示视频时,抛出java.lang.IllegalStateException异常
2015-12-24 10:58
656 查看
使用Mediaplayer播放视频时,自定义了进度条显示进度,一次需要使用run方法来实时监测视频播放的位置,代码如下:Runnable runnable = new Runnable() {
@Override
public void run() {
if (player != null) {
int pos = player.getCurrentPosition();
if (pos > 0) {
int duration = player.getDuration();
int ss = (int) (player.getCurrentPosition() * 100)
/ duration;
progress.setProgress(ss);
video_time.setText(TimerUtils.formatTimes(player
.getCurrentPosition()));
if (pos == duration) {
player.pause();
btn_player
.setBackgroundResource(R.drawable.bt_view_play);
}
} else {
video_time.setText("00:00");
progress.setProgress(0);
}
}
view_handler.postDelayed(runnable, 1000);
}
};
但是在退出该activity时,总是会报错java.lang.IllegalStateException,而位置则是指向 player.getCurrentPosition(),
在onDestroy方法中relese掉了mediaplayer,但是仍会报错;后来发现,当退出该activity时,将其destroy掉了,但是只是释放掉player是不够的,同时还要增加判断
if (player != null) {
player = null;
}
将mediaplayer设置为空,runnable 中的内容就不会在退出activity时继续执行,而引起异常了。
@Override
public void run() {
if (player != null) {
int pos = player.getCurrentPosition();
if (pos > 0) {
int duration = player.getDuration();
int ss = (int) (player.getCurrentPosition() * 100)
/ duration;
progress.setProgress(ss);
video_time.setText(TimerUtils.formatTimes(player
.getCurrentPosition()));
if (pos == duration) {
player.pause();
btn_player
.setBackgroundResource(R.drawable.bt_view_play);
}
} else {
video_time.setText("00:00");
progress.setProgress(0);
}
}
view_handler.postDelayed(runnable, 1000);
}
};
但是在退出该activity时,总是会报错java.lang.IllegalStateException,而位置则是指向 player.getCurrentPosition(),
在onDestroy方法中relese掉了mediaplayer,但是仍会报错;后来发现,当退出该activity时,将其destroy掉了,但是只是释放掉player是不够的,同时还要增加判断
if (player != null) {
player = null;
}
将mediaplayer设置为空,runnable 中的内容就不会在退出activity时继续执行,而引起异常了。
相关文章推荐
- Ruby中的异常处理代码编写示例
- MySQL抛出Incorrect string value异常分析
- MediaPlayer 在线播放器代码
- 详解JavaScript中的异常处理方法
- java程序中的延时加载异常及解决方案
- 解析Java异常的栈轨迹及其相关方法
- .NET(C#):Emit创建异常处理的方法
- windows7服务器上weblogic启动失败异常解决方法
- 有关ajax的error与后台的异常问题解决
- 深入探讨JAVA中的异常与错误处理
- GO语言异常处理机制panic和recover分析
- 浅谈JAVA 异常对于性能的影响
- C++ 异常处理 catch(...)介绍
- php中异常处理方法小结
- PHP中异常处理的一些方法整理
- 浅析Lua编程中的异常处理
- Perl中捕获警告信息、异常信息并写入日志详解
- 格式导致的Excel导入sql出现异常的解决方法
- Powershell小技巧之捕获脚本内部的异常
- 深入Android MediaPlayer的使用方法详解