MediaPlayer使用技巧
在使用MediaPlayer的使用过程中,有个小技巧需要说明一下:
1、在使用start()播放流媒体之前,需要装载流媒体资源。这里最好使用prepareAsync()用异步的方式装载流媒体资源。因为流媒体资源的装载是会消耗系统资源的,在一些硬件不理想的设备上,如果使用prepare()同步的方式装载资源,可能会造成UI界面的卡顿,这是非常影响用于体验的。因为推荐使用异步装载的方式,为了避免还没有装载完成就调用start()而报错的问题,需要绑定MediaPlayer.setOnPreparedListener()事件,它将在异步装载完成之后回调。异步装载还有一个好处就是避免装载超时引发ANR((Application Not Responding)错误。01.1 mediaPlayer = new MediaPlayer();
02.2 mediaPlayer.setDataSource(path);
03.3 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
04.4
05.5 // 通过异步的方式装载媒体资源
06.6 mediaPlayer.prepareAsync();
07.7 mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
08.8 @Override
09.9 public void onPrepared(MediaPlayer mp) {
10.10 // 装载完毕回调
11.11 mediaPlayer.start();
12.12 }
13.13 });
2、使用完MediaPlayer需要回收资源。MediaPlayer是很消耗系统资源的,所以在使用完MediaPlayer,不要等待系统自动回收,最好是主动回收资源。1.1 if (mediaPlayer != null && mediaPlayer.isPlaying()) {
2.2 mediaPlayer.stop();
3.3 mediaPlayer.release();
4.4 mediaPlayer = null;
5.5 }3、使用MediaPlayer最好使用一个Service来使用,并且在Service的onDestory()方法中回收MediaPlayer资源,实际上,就算是直接使用Activity承载MediaPlayer,也最好在销毁的时候判断一下MediaPlayer是否被回收,如果未被回收,回收其资源,因为底层调用的native方法,如果不销毁还是会在底层继续播放,而承载的组件已经被销毁了,这个时候就无法获取到这个MediaPlayer进而控制它。