@SuppressLint("NewApi")和@TargetApi()的区别

转自:http://blog.csdn.NET/wbshuang09/article/details/44920549
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 plaincopy

  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
  2. //
  3. } else {// Pre GINGERBREAD
  4. //
  5. }

@SuppressLint标注忽略指定的警告

@SuppressLint标注忽略指定的警告

@SuppressLint标注忽略指定的警告

这个是android带的lint工具提示的,lint官方的说法是 Improving Your Code with lint,应该是帮助提升代码的 ,如果不想用的话,可以右键点工程,然后在android tools 中,选择 clear lint marker 就没有这个错误了

时间: 2024-10-16 23:04:40

@SuppressLint("NewApi")和@TargetApi()的区别的相关文章

(转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?

@SuppressLint 和 @TargetApi达到的效果是一样的,相对于SuppressLint ,TargetApi会根据函数里使用的API,严格匹配SDK版本,给出编译错误,但是SuppressLint 则忽略了SDK版本. 例如: [java] view plaincopy @TargetApi(Build.VERSION_CODES.FROYO) public static File getExternalCacheDir(Context context) { File dir;

@SuppressLint("NewApi")

在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告,解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi(). 那他们之间有什么区别呢,很简单, @SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的android lint错误 @TargetApi() 只屏蔽某一新api中才能使用的方法

@SuppressLint("NewApi")的作用

在我们日常开发Android当中,经常遇到写了一段正常的代码,但是系统报错,然后根据系统提示, 会帮我们自动添加一个@SuppressLint("NewApi"),然后错误就撤销了 原因是我们代码中使用了比我们所设置的android:minSdkVersion=  (即兼容最低版本)要高的方法 一般解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()或者设置更高的最低版本 1.@SuppressLint("New

android.annotation.SuppressLint

Lint是一个静态检查器,它围绕Android项目的正确性.安全性.性能.可用性以及可访问性进行分析.它检查的对象包括XML资源.位图.ProGuard配置文件.源文件甚至编译后的字节码. Lint包含了API版本检查.性能检查以及其他诸多特性. 其中还有一个重要的改动是Lint可以使用@SuppressLint标注忽略指定的警告. lint官方的说法是 Improving Your Code with lint,应该是帮助提升代码的 ,如果不想用的话,可以右键点工程,然后在android to

android重写view和viewgroup的区别

重写view: View类一般用于绘图操作,重写它的onDraw方法,但它不可以包含其他组件,没有addView(View view)方法. 重写viewgroup: ViewGroup是一个组件容器,它可以包含任何组件,但必须重写onLayout(boolean changed,int l,int t,int r,int b)和onMesure(int widthMesureSpec,int heightMesureSpec)方法. 否则ViewGroup中添加组件是不会显示的. 自定义重写L

自定义MediaController来实现修改底部布局作以及实现vedioview半屏与全屏的切换

因为直接使用系统vedioview,底部的MediaController布局有点不好看,尤其是进度条,不能实现办半屏与全屏的切换,自己网上看了下别人的资料,整理了下,做以笔记:初学者,勉强才实现这些功能,还有许多地方不明白. 看下效果:                    1,MediaController.java.直接复制下系统源码的MediaController,来进行修改,就两个地方,一个布局相关的修改,以及进度条ProgressBar的修改,然后就 是添加了半屏与全屏的切换接口. /

Android蓝牙开发---站在前辈的肩膀上唠嗑

描述一段背景:前年我找工作时,总碰到一个问题. 面试官问:"你会蓝牙开发吗?". 我说:"不会". 面试官答:"那,很抱歉.我们商量了一下,觉得你不适合这个岗位." 于是我就走了,心里想:"就应为一个蓝牙通讯技术不会,就把我给cut了,这面试官好有想象力." 我一个同学,都没做过编程,我半年时间都带到android开发道上了.我仅仅蓝牙没做过,研究蓝牙无非就是三两天的时间,难吗? 于是,我周末窝在家里,查阅了大量资料,实践和总

Android ActionBar 初探

1.指南,例子,个人感觉 首先上官网指南链接http://developer.android.com/guide/topics/ui/actionbar.html 参考了官网上的例子http://developer.android.com/samples/ActionBarCompat-Basic/index.html 初看指南感觉ActionBar 的作用类似于web 开发中常用的include heder.html ,如cnblog 页面总第一行 . 2.兼容问题: sdk 11及11以上

腾讯面试合集:热修复连环炮(热修复是什么 有接触过tinker吗,tinker原理是什么)

原文链接:https://www.jianshu.com/p/dcc4a146192e 1.热修复是什么 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新就得将app重新打包发布到应用市场后,让用户再一次下载,这样就大大降低了用户体验,当热修复出现之后,这样的问题就不再是问题了. 目前较火的热修复方案大致分为两派,分别是: 1.阿里系:spohix.and