美文网首页ios技术交流Android技术交流
@TargetAPI + 版本判断实现高低API版本兼容

@TargetAPI + 版本判断实现高低API版本兼容

作者: 浪人残风 | 来源:发表于2021-02-26 15:58 被阅读0次

    安卓开发中,在低版本SDK使用高版本的API会报错。
    一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;
    后者可以用如下技巧来实现。

    Step 1

    在使用了高版本API的方法前面加一个 @TargetApi(API号)

    Step 2

    在代码上用版本判断来控制不同版本使用不同的代码
    例如:

    @TargetApi(11)
    public void text(){
        if(Build.VERSION.SDK_INT >= 11){
           // 使用api11 新加 api的方法
        } else {
           // 低版本的折衷处理方法
        }
    }
    

    知识点

    1.Annotation

    Annotation继承自java.lang.annotation.Annotation的类,用于向程序分析工具或虚拟机提供package class field methed 等方面的信息。Annotation 提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看, annotation 就像修饰符一样被使用,并应用于包、类 型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在annotation的“name=value”结构对中。 annotation 类型是一种接口,能够通过java反射API的方式提供对其信息的访问。
    annotaion 不影响程序代码的执行,无论增加、删除 annotation ,代码都始终如一的执行。
    annotaion 与其他类的主要不同之处在于其使用方式;只要按照“@+annotation类型名称+(..逗号分割的name-value对...)”的组成语法,写在需要的地方。其中成员可以按照任何的顺序。如果 annotation 类型定义了某个成员的默认值,则这个成员可以被省略,eg.@Override。
    annotation 方式写程序简短实用易维护,所以越来越成为主流。

    2.Android lint

    Android lint是一个代码扫描工具,能够帮助我们识别代码结构存在的问题,比如使用了高于minSdk的api。

    3.@TargetAPI Annotation

    @TargetAPI 对应android.annotation.TargetApi,与它相似的注解还有@SuppressLint,作用都是告诉编译器:你可以忽略掉lint错误了,我用高于minSdk的api又咋滴?要你管啊~我不怕啊_
    为什么这里我们用 @TargetAPI 而不用@SuppressLint,因为@TargetAPI还能指明应用的API版本,在代码中获得平台的SDK版本与这个版本对比后提示应用与平台的兼容性,比如现在的TargetAPI指定为11,以后我用了13的,仍然会得到版本不兼容的提示;而@SuppressLint做不到这一点,所以@TargetAPI更优。

    如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

    读者有什么想看的相关技术篇章,欢迎评论留言!

    QQ交流群:908058499

    相关文章

      网友评论

        本文标题:@TargetAPI + 版本判断实现高低API版本兼容

        本文链接:https://www.haomeiwen.com/subject/oiamfltx.html