@SuppressLint("NewApi")和@TargetApi()的区别
2016-03-03 11:28
225 查看
在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错误,所以在方法中还要判断版本做不同的操作,比如:
[java] view
plain copy
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错误,所以在方法中还要判断版本做不同的操作,比如:
[java] view
plain copy
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
//
} else {// Pre GINGERBREAD
//
}
相关文章推荐
- Java中静态成员
- js 三元表达式
- 设计模式(10)——组合模式(Composite Pattern)
- 通过javascript 获取当前地理位置 所在城市
- Centos 6.7 下安装git 各种累心折腾
- Java中的静态内部类与非静态内部类的区别
- echarts .NET类库开源
- mysql 在row模式下truncate 与 delete 二进制日志记录的差异
- java加时间
- mysqli报错(HY000/2002)
- Javascript进阶篇——( JavaScript内置对象---下)--Math对象---笔记整理
- 伪类 伪元素 如何区分
- [Theano] Theano初探
- ECLIPSE下SVN的创建分支/合并/切换使用
- Spark Streaming和Kafka整合是如何保证数据零丢失
- Swift2.0(14)引用类型与数值类型
- logistic回归(机器学习)
- Home Screen Quick Actions
- memcached安装
- c语言二叉树的存储表示与实现