当我们使用一个较高版本才有的api
时,编译器会报错,这个注解的作用仅仅是让编译通过,而并没有避免低版本的系统运行高版本的api
的问题,在使用时我们需要自己判断版本号来使用不同的api
。 目前官方建议使用@RequiresApi
。
@RequiresApi
:当我们对某个类或者方法使用这个注解时,如果我们需要在其他类中调用该类或者类中方法时,编译器会提示我们需要处理版本差异的判断。
当我们查看该注解类的源码时,发现其注释有这么一段话:
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")
则是不需要。