我写了一个app,需要用到MediaSession, 这个类只在Android L及其以上系统才有。
我想实现:当Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLIPOP时,我使用到的MediaSession的类不加载。
我用@RequiresApi(Build.VERSION_CODES.LOLLIPOP)或者@TargetApi(Build.VERSION_CODES.LOLLIPOP)给这个类加了注解,但是没有什么用。
如何才能实现当Android版本低于Android L时,使用到MediaSession的类不加载?谢谢解答!P.S. 有一个类MediaSessionCompat,它可以在低于Android L的系统下运行,但是它是线程不安全的,刚好我需要线程安全所以就不能使用这个类。所以不考虑MediaSessionCompat

解决方案 »

  1.   

    不知道你尝试过这样处理没有:
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//API大于等于 21 ,才加载MediaSession类
                  //就在这里面写你有关MediaSession类的操作逻辑
                  MediaSession a = new MediaSession(MainActivity.this, "myMedia");
                  ...
                  ...
                  ...
            }
      

  2.   

    MediaSessionCompat
    操作的时候加个synchronized自己把它写成线程安全的不就可以了