@SuppressLint("NewApi")和@TargetApi()的区别
2016-05-07 15:51
357 查看
在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告,解决方法是在方法上加上@SuppressLint(“NewApi”)或者@TargetApi()。
那他们之间有什么区别呢,很简单,
@SuppressLint(“NewApi”)屏蔽一切新api中才能使用的方法报的android lint错误
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误
举个例子,某个方法中使用了api9新加入的方法,而项目设置的android:minSdkVersion=8,此时在方法上加@SuppressLint(“NewApi”)和@TargetApi(Build.VERSION_CODES.GINGERBREAD)都可以,以上是通用的情况。
而当你在此方法中又引用了一个api11才加入的方法时,@TargetApi(Build.VERSION_CODES.GINGERBREAD)注解的方法又报错了,而@SuppressLint(“NewApi”)不会报错,这就是区别。
当然,不管你使用了哪个注解,作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作,比如:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
//
} else {// Pre GINGERBREAD
//
}
那他们之间有什么区别呢,很简单,
@SuppressLint(“NewApi”)屏蔽一切新api中才能使用的方法报的android lint错误
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误
举个例子,某个方法中使用了api9新加入的方法,而项目设置的android:minSdkVersion=8,此时在方法上加@SuppressLint(“NewApi”)和@TargetApi(Build.VERSION_CODES.GINGERBREAD)都可以,以上是通用的情况。
而当你在此方法中又引用了一个api11才加入的方法时,@TargetApi(Build.VERSION_CODES.GINGERBREAD)注解的方法又报错了,而@SuppressLint(“NewApi”)不会报错,这就是区别。
当然,不管你使用了哪个注解,作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作,比如:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
//
} else {// Pre GINGERBREAD
//
}
相关文章推荐
- C#如何防止程序多次运行的技巧
- More Effective C++----(28)灵巧(smart)指针
- java单例模式详解
- SGU 326 网络流
- java代码获取各种时间
- 流体时间,水波纹效果
- ViewPager和Fragment结合使用,可以做出顶部导航界面滑动效果
- 关于获取shell脚本运行路径和本身绝对路径的记录
- 第3课:通过案例对SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶
- uvalive3637(DP)
- weak的生命周期:具体实现方法
- Opencv在安卓平台上编译----调用C++库
- Python编写电话薄实现增删改查功能
- go程序性能测量和分析
- Unity3D Quaternion各属性和函数测试
- Google Java 编程风格指南 —— 见微知著
- 自定义刷新控件的实现原理
- Linux设备模型(Linux设备驱动程序)
- JAVA泛型中? T K V E等代表的意思
- hihoCoder 数论五·欧拉函数