Android之路

导航

一种解题思路-借鉴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编辑  收藏  举报