安卓小技巧专栏(一)@TargetAPI + 版本判断实现高低API版本兼容
来源:互联网 发布:阿里云ntp服务器地址 编辑:程序博客网 时间:2024/05/17 00:05
From: http://benbench.sinaapp.com/index.php/archives/39/
安卓开发中,在低版本SDK使用高版本的API会报错。一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;后者可以用如下技巧来实现。
步骤
Step 1
在使用了高版本API的方法前面加一个 @TargetApi(API号)
Step 2
在代码上用版本判断来控制不同版本使用不同的代码
eg.
@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更优。
- 安卓小技巧专栏(一)@TargetAPI + 版本判断实现高低API版本兼容
- 安卓小技巧专栏(一)@TargetAPI + 版本判断实现高低API版本兼容
- 安卓小技巧专栏(一)@TargetAPI 版本判断实现高低API版本兼容
- @TargetAPI + 版本判断实现高低API版本兼容
- [Android]高低API版本兼容之@TargetApi
- 高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- 高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- [Android]高低API版本兼容之@TargetApi
- 【Android】高低API版本兼容之@TargetApi与@SuppressLint("NewApi")
- tenth(1000以内偶数和,其一)
- 线程的挂起与唤醒之实现app加载广告点击跳转功能
- versions在优胜美地系统的不稳定解决方案
- kali linux arp劫持
- ubuntu下配置java环境
- 安卓小技巧专栏(一)@TargetAPI + 版本判断实现高低API版本兼容
- MySQL数据类型和java数据类型
- 给大家讲解。数据结构篇(一) 动态数组ngx_array_t
- openssl提取pfx证书密钥对
- 虾米音乐Qt版下载器之Location解密部分
- Visual Studio下SQLite数据库开发环境设置
- UVA1440 有下界的最小流
- ALTER DATABASE 数据库镜像 (Transact-SQL)-转
- android开发之关于彻底退出程序