0%

MediaPlayer使用

MediaPlayer有时没有回调OnCompletionListener,并报错:`MediaPlayer finalized without being released`

MediaPlayer mediaPlayer = MediaPlayer.create(mContext, rawId);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mediaPlayer.start();

原因:成员变量被gc回收了,导致没有回调成功(或者播放至一半就停了)。保持mediaPlayer引用,防止被改成回收

参考:http://stackoverflow.com/questions/15023037/garbage-collection-causes-mediaplayer-finalized-without-being-released