一种解题思路-借鉴MediaPlayer的setNextMediaPlayer()
整理之前的笔记,看到一种“若在使用系统控件的某个高版本方法时,为了兼容低版本”的一种解题思路:重新复习了一遍,也查看了相关的参考文章,应该是之前处理音乐播放时遇到的一个问题,关于问题的修改可查看https://stackoverflow.com/questions/18468364/android-mediaplayer-setnextmediaplayer-alternative
本文的重点是一种解决问题的思路,以MediaPlayer的setNextMediaPlayer()为例:
该方法在API 16才出现,因此在低于此版本的系统中运行,应用会出错。此时可使用如下方法解决:判断是否存在该方法,若不存在,即在异常中处理;若存在,直接使用super。代码如下:
1 try {
2 MediaPlayer.class.getMethod("setNextMediaPlayer", MediaPlayer.class);
3 mCompatMode = false; //#
4 } catch (NoSuchMethodException e) {
5 mCompatMode = true;
6 super.setOnCompletionListener(this);
7 }
8 ......
9
10 public void setNextMediaPlayer(MediaPlayer next) {
11 if (mCompatMode) {
12 mNextPlayer = next;
13 } else {
14 super.setNextMediaPlayer(next); //#
15 }
16 }
第3行表示该方法存在,因此在第14行可以直接调用。
posted on 2019-07-25 18:01 Android之路 阅读(1034) 评论(0) 编辑 收藏 举报