Mediaplayer的资源释放 我写了个广播接受类,获取手机收到的短信,有一个功能是收到指定短信就响铃,创建了MediaPlayer,然后start,之前调试都能正常响,后来就报错内存不足了E/MediaPlayer: error (1, -19)在后面加上释放语句的话还是会报错, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 加上释放语句后控制台没有报错,但还是没有声音,控制台:W/MediaPlayer: mediaplayer went away with unhandled events 创建没问题,释放有问题,不要直接释放。使用一个对象,添加完成事件和错误事件,完成事件写上seekto(0)可以重复使用,错误事件写重新初始化,只有页面关闭或不再需要时再释放。public synchronized void initMediaPlayer(){ if (mMediaPlayer == null){ mMediaPlayer = MediaPlayer.create(this, R.raw.music); mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mMediaPlayer.seekTo(0); } }); mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { release(); initMediaPlayer(); return false; } }); } } public void start(){ if (mMediaPlayer != null){ mMediaPlayer.start(); } } public void release(){ if (mMediaPlayer != null){ mMediaPlayer.stop(); mMediaPlayer.release(); mMediaPlayer = null; } } 不知是不是android 的BUG。 写一个象棋软件,人人下的。有什么参考的资料? 简单解析XML java中的api在android下用不成 一个比较棘手的问题!!!!! 短信拦截-短信发送之前拦截 android 睡眠灭屏显示 touchkit电阻屏调试【求助】 如何查看APP的排名 关于点击事件的问题求助。 安卓上利用hook进行透明加解密 想问一下 ,现在大家做android开发 AS升级到3.3了吗
if (mMediaPlayer == null){
mMediaPlayer = MediaPlayer.create(this, R.raw.music);
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mMediaPlayer.seekTo(0);
}
});
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
release();
initMediaPlayer();
return false;
}
});
}
} public void start(){
if (mMediaPlayer != null){
mMediaPlayer.start();
}
}
public void release(){
if (mMediaPlayer != null){
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}