前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Android中@SuppressLint(“NewApi“)、@TargetApi和@RequiresApi的区别

关于Android中@SuppressLint(“NewApi“)、@TargetApi和@RequiresApi的区别

作者头像
易帜
发布2022-02-09 16:11:29
1.2K0
发布2022-02-09 16:11:29
举报
文章被收录于专栏:易帜的Android 学习之旅

当我们使用一个较高版本才有的api时,编译器会报错,这个注解的作用仅仅是让编译通过,而并没有避免低版本的系统运行高版本的api的问题,在使用时我们需要自己判断版本号来使用不同的api。 目前官方建议使用@RequiresApi

@RequiresApi:当我们对某个类或者方法使用这个注解时,如果我们需要在其他类中调用该类或者类中方法时,编译器会提示我们需要处理版本差异的判断。

当我们查看该注解类的源码时,发现其注释有这么一段话:

代码语言:javascript
复制
This is similar in purpose to the older {@code @TargetApi} annotation, but more clearly
expresses that this is a requirement on the caller, rather than being used to "suppress" warnings
 within the method that exceed the {@code minSdkVersion}.

其大概意思为:

这在目的上与较旧的{@code @TargetApi}注释相似,但更清楚地表示这是调用方的要求,而不是用于在超出{ minSdkVersion的方法中“抑制”警告* }。

该翻译结合我们的实践,则表示如果使用了@RequiresApi注解,那么在调用被修饰的类或者方法时,同样会警告调用者,需要处理不同版本之间的差异化,而@TargetApi@SuppressLint("NewApi") 则是不需要。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档