(转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?
@SuppressLint 和 @TargetApi达到的效果是一样的,相对于SuppressLint ,TargetApi会根据函数里使用的API,严格匹配SDK版本,给出编译错误,但是SuppressLint 则忽略了SDK版本。
例如:
- @TargetApi(Build.VERSION_CODES.FROYO)
- public static File getExternalCacheDir(Context context) {
- File dir;
- // if (!VersionUtils.hasDonut()) {
- if (!VersionUtils.hasFroyo()) {
- dir = new File(Environment.getExternalStorageDirectory().getPath()
- + "/Android/data/" + context.getPackageName() + "/cache/");
- if (!dir.exists() && !dir.mkdirs())
- dir = null;
- } else {
- dir = context.getExternalCacheDir();
- }
- return dir;
- }
如果把VersionUtils.hasFroyo()改成VersionUtils.hasDonut()则会报编译错误,如果是@SuppressLint("NewApi") 则不会提示错误。比较严谨的角度讲,更加推荐TargetApi
原文地址:http://blog.csdn.net/hero_yin/article/details/23081129
(转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?的更多相关文章
- 程序包需要 NuGet 客户端版本“2.12”或更高版本,但当前的 NuGet 版本为“2.8.50313.46”
由于安装install-package newtonsoft.json 会出现需要 NuGet 客户端版本“2.12”或更高版本来安装,于是换成旧版的newtonsoft.json PM> ...
- 让44.1版本的sketch打开更高版本的sketch文件
我们都知道,sketch的有效license与版本挂钩.最近设计师又更新了sketch版本,导致她生成的源文件我都无法打开. 毕竟我不是使用sketch进行UI设计,仅用它来查看设计稿参数,再花99美 ...
- Subclipse和TortoiseSVN版本不一致导致升到高版本的project后,低版本svn客户端无法使用。
- xcode低版本调试高版本真机系统
低版本xcode调试本真机高版本系统 //打开此路径把最新的文件拷贝到这里就可以了 /Applications/Xcode.app/Contents/Developer/Platforms/iPhon ...
- 高版本->低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000
生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表 11.2.0.3-->10.2.0.4,若 ...
- 低版本的无法打开高版本的VM
低版本VM工具運行高版本VM環境時,會彈出不支持虚拟机配置.例如:使用VM8工具打開VM9配置的VM環境,會彈出下面的提示 在遇到這種情況的時候,一般都會選擇升級VM工具.如果不想升級VM工具,可以通 ...
- phpstudy里升级mysql版本到5.7
phpstudy里没有地方可以设置mysql数据库,很多人都疑惑在phpstudy里怎么升级mysql数据库版本,本文就教你如何在phpstudy中升级mysql的版本. PhpStudy集成环境中的 ...
- Sandcastle Help File Builder(.NET帮助文档工具)的版本选择心得——支持VS2010至VS2015,高版本项目文件问题
作者: zyl910 一.缘由 "Sandcastle Help File Builder"(简称SHFB)是一个很好用.NET 帮助文档生成工具. 但它的每个版本支持的VS版本范 ...
- 高版本teamview的成为被控制端时,会一直出现“正在初始化显示参数”
故障现象:高版本teamview的成为被控制端时,控制端会一直出现“正在初始化显示参数”,如图是teamview13作为服务器端,控制端连接一直出现这个情况 做好的解决办法: 把被控制端的teamvi ...
随机推荐
- Lingo 做线性规划 - Revenue Management
Reference: <An Introduction to Management Science Quantitative Approaches to Decision Making, Rev ...
- nginx upstream模块--负载均衡
Module ngx_http_upstream_module英文文档 upstream模块相关说明1.upstream模块应放于nginx.conf配置的http{}标签内2.upstream模块默 ...
- crossplatform---Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
- Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现 1. 实现思路:::元插件,元设置... 1 2. 实现流程downzip,unzip,exec 1 3. Zip ...
- Struts2入门1 Struts2基础知识
Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...
- Spring基于注解及SpringMVC
1.使用注解 (1)组件扫描 指定一个包路径,Spring会自动扫描该包 及其子包所有组件类,当发现组件类定义前有 特定的注解标记时,就将该组件纳入到Spring 容器.等价于原有XML配置中的< ...
- memset与malloc性能测试
memset与malloc性能测试 测试环境:2.2GHZ.2G内存 memset一段大小为1K的buf,每秒有1200万次:10K的buf,每秒有260万次:100K的buf,每秒有13万次. ma ...
- 使用Git Bash for Windows
本篇体验Git Bash在Windows操作系统上的用法. 什么是Bash? 是一个Shell环境,Bourne Again Shell的缩写. 安装git for windows → http:// ...
- java综合
java环境变量配置:http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html 1.导入项目 当下载了包含Eclipse 项目的源代 ...
- Angular学习笔记--last_update 20151106
参考来源:http://www.angularjs.cn/tag/AngularJS?p=1&s=50 基本要求:一周搞定33篇学习文章 目标:develop/refactor lms系统an ...