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

简介: @SuppressLint 和 @TargetApi达到的效果是一样的,相对于SuppressLint ,TargetApi会根据函数里使用的API,严格匹配SDK版本,给出编译错误,但是SuppressLint 则忽略了SDK版本。

@SuppressLint 和 @TargetApi达到的效果是一样的,相对于SuppressLint ,TargetApi会根据函数里使用的API,严格匹配SDK版本,给出编译错误,但是SuppressLint 则忽略了SDK版本。

例如:

 

[java]  view plain copy
 
  1.      @TargetApi(Build.VERSION_CODES.FROYO)  
  2.     public static File getExternalCacheDir(Context context) {  
  3.         File dir;  
  4. //        if (!VersionUtils.hasDonut()) {  
  5.         if (!VersionUtils.hasFroyo()) {  
  6.             dir = new File(Environment.getExternalStorageDirectory().getPath()  
  7.                     + "/Android/data/" + context.getPackageName() + "/cache/");  
  8.             if (!dir.exists() && !dir.mkdirs())  
  9.                 dir = null;  
  10.         } else {  
  11.             dir = context.getExternalCacheDir();  
  12.         }  
  13.         return dir;  
  14.     }  

如果把VersionUtils.hasFroyo()改成VersionUtils.hasDonut()则会报编译错误,如果是@SuppressLint("NewApi") 则不会提示错误。比较严谨的角度讲,更加推荐TargetApi

原文地址:http://blog.csdn.net/hero_yin/article/details/23081129

目录
相关文章
|
6月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
86 0
|
6月前
|
开发工具
钉钉新版本sdk中如何获取用户手机id
钉钉新版本sdk中如何获取用户手机id
|
3月前
|
API 开发工具 图形学
PicoVR Unity SDK⭐️五、常用API接口函数一览
PicoVR Unity SDK⭐️五、常用API接口函数一览
|
3月前
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
4月前
|
机器学习/深度学习 人工智能 Java
人工智能平台PAI使用问题之Java SDK支持哪些版本
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
存储 人工智能 Java
2024创建boot时 项目SDK11不支持所选的版本Java21 请选择较低版本的java 解决方案
2024创建boot时 项目SDK11不支持所选的版本Java21 请选择较低版本的java 解决方案
67 2
|
5月前
|
jenkins 持续交付 开发工具
Android使用Jenkins打包自动维护sdk版本号
Android使用Jenkins打包自动维护sdk版本号
57 0
|
6月前
|
Java 开发工具 Maven
sdk2.9.2的版本缺少方法
在IntelliJ IDEA中,SDK版本2.9.2。当前阿里云Maven仓库被用于获取SDK。需要新SDK
48 0
|
6月前
|
数据采集 缓存 Linux
🔥🔥🔥最稳定好用的跨平台SDK版本管理器(version-manager)
version-manager (vm)是一个全平台的、精简的版本管理工具,旨在无缝管理多种编程语言,包括新兴语言如 vlang、zig 和 typst。与fnm、sdkman等工具不同,vm专注于提供流畅、稳定的体验,通过内置机制隔离和缓存爬虫数据,避免插件需求。它支持代理设置和多线程下载,优化了国内用户下载速度。vm覆盖40+语言和工具的安装、切换及环境管理,简化了资源查找和SDK管理。欢迎访问 <https://github.com/gvcgo/version-manager> 参与项目。演示动图分别适用于MacOS、Windows和Linux。
🔥🔥🔥最稳定好用的跨平台SDK版本管理器(version-manager)
|
6月前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数中sdk可以被中层引用如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。