十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关如何在低版本SDK调用高版本API,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
目前创新互联建站已为千余家的企业提供了网站建设、域名、虚拟空间、绵阳服务器托管、企业网站设计、霍尔果斯网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
随着Android SDK版本不断的迭代更新,在新的SDK上总是会出现让人眼前一亮非常方便好用的API。但是这些新的API呢在低版本的SDK上是没有的,所以当我们的minSdkVersion的版本低于新API所在的版本时,我们直接使用新API在编译时会出现报错。如果只是想解决编译报错的问题呢,Android给我们提供了两种注解的方式避免编译时报错:
@SuppressLint
@TargetApi
这两种方法又有什么区别呢?
SupressLint很显然的意思是忽略Lint检查,对于我们使用高版本API来说,可以使用@SuppressLint("NewApi")的方式让Lint在编译时忽略所调用API对版本的要求。而@TargetApi是忽略特定版本的API调用报错。
举个栗子:当你的项目minSdkVersion=9,你想使用API 11的新的方法时。此时,使用@TargetApi(11)和@SuppressLint("NewApi")的效果一样,代码都不会报错。但是如果你使用了Api 19才出现的新的方法时,在使用@TargetApi的方法中还是会给你报错,而在另一个方式中依然不会报错。
那这么讲使用@SuppressLint("NewApi")就更好了?
当然不是啦!我们要清楚一点,使用上面两种注释的方式只是让lint在编译时不再报错,在低版本的手机系统中,如果直接使用高版本的API肯定会报:“NoSuchMethod”的Crash的。
所以正确的做法应该是在注解的方法中,做版本判断,在低版本中依然使用老的方式处理。版本判断时我们需要判断具体的版本号,比如
1@TargetApi(9)
2public void doSomeThing() {
3 if(Build.VERSION.SDK_INT >= 9) {
4 // 此时我们正常使用API 9的方法,如果这里误使用了Api 11中的方法,编译时就会报错
5 // 提醒我们只是引入API 9中的方法
6 } else {
7 // TODO 使用老的方式
8 }
9}
10
11@SuppressLint("NewApi")
12public void doOthers() {
13 if(Build.VERSION.SDK_INT >= 9) {
14 // 此时我们正常使用API 9的方法,如果这里误使用了Api 11中的方法,编译不会报错
15 // 那么运行在低版本中将会引发Crash的风险
16 } else {
17 // TODO 使用老的方式
18 }
19}
上述就是小编为大家分享的如何在低版本SDK调用高版本API了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。