android targetapi版本低,我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...
Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi")
例如:AndroidManifest.xml中,我们配置了sdk版本的最低为9,目标sdk为19
android:minSdkVersion="9"
android:targetSdkVersion="19" />
当我们使用了大于sdk版本为9的API时候,编译器就会提示警告。例如:
import android.os.AsyncTask;
import android.os.Build;
public class Test {
static public void executeAsyncTask(AsyncTask task,T...params){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
}
警告如下:
Multiple markers at this line
- Field requires API level 11 (current min is 9):
android.os.AsyncTask#THREAD_POOL_EXECUTOR
- Call requires API level 11 (current min is 9): android.os.AsyncTask#executeOnExecutor
截图如下截图如下:
Multiple markers at this line
- Field requires API level 11 (current min is 9):
android.os.AsyncTask#THREAD_POOL_EXECUTOR
- Call requires API level 11 (current min is 9): android.os.AsyncTask#executeOnExecutor
解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()。
那他们之间有什么区别呢,很简单,
@SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的android lint错误
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误。
使用@TargetApi(Build.VERSION_CODES.HONEYCOMB)方式解决
import android.annotation.TargetApi;
import android.os.AsyncTask;
import android.os.Build;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class Test {
static public void executeAsyncTask(AsyncTask task,T...params){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
}
使用@SuppressLint("NewApi")方式解决
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Build;
public class Test {
@SuppressLint("NewApi")
static public void executeAsyncTask(AsyncTask task,T...params){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
}
当然,不管你使用了哪个注解,作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作,例如上述代码。
public class Test {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
static public void executeAsyncTask(AsyncTask task,
T... params) {
// 当版本大于Build.VERSION_CODES.HONEYCOMB时调用的方法
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
// 当版本小于Build.VERSION_CODES.HONEYCOMB时调用的方法
else {
task.execute(params);
}
}
}
====================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
====================================================================================
android targetapi版本低,我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...相关推荐
- 我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...
Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi") 例如:AndroidManifest.xml中,我们配置了sdk版本的 ...
- android服务进阶,我的Android进阶之旅------Android服务的生命周期回调方法
先引用一段官网上的文字 ======================================================================================== ...
- 我的Android进阶之旅------Android利用Sensor(传感器)实现水平仪功能的小例
这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端. 利用方向传感器返回的第一个参数,实现了一个指南针小应用. ...
- 我的Android进阶之旅------Android利用温度传感器实现带动画效果的电子温度计
要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...
- 我的Android进阶之旅------Android项目目录结构分析
此文章来自"博客园"博主,仅在此借鉴,学习 1.HelloWorld项目的目录结构 1.1.src文件夹 1.2.gen文件夹 1.3.Android 2.1文件夹 1.4.ass ...
- 我的Android进阶之旅------android Matrix图片随意的放大缩小,拖动(转)
step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable-hdpi目录下,如下图所示: step2: 设置应用的UI界面,在main.xml中设置: [html] v ...
- 我的Android进阶之旅------Android中adb install 安装错误常见列表
adb的安装过程分为传输与安装两步. 在出错后,adb会报告错误信息,但是信息可能只是一个代号,需要自己定位分析出错的原因. 下面是从网上找到的几种常见的错误及解决方法: 1.INSTALL_FAIL ...
- 我的Android进阶之旅------Android Studio 快捷键整理分享
正式转战Android Studio了,首先把Android Studio的快捷键摘录下来,以备后用. (官网的快捷键列表如下 https://developer.android.com/studi ...
- 我的Android进阶之旅------Android Gusture 手势识别小案例
Step1: 生成一个Android Gusture Builder程序用于画Gusture然后存储起来用于其它的项目 首先导入 android SDK \android-sdk-windows\s ...
最新文章
- VM 7 下ubuntu安装vmtools
- Windows上的原生Linux容器(盆盆的Kubecon课程分享)
- Fastboot简介
- 2019.2.14 t3 车辆销售
- python库整理:collections.defaultdict
- 不属于mysql常量的是_R256是内部“字”继电器WR25的( )号位。_学小易找答案
- Vim的使用和快捷键介绍
- 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
- centos6.9搭建lnmp环境
- cocostudio学习之关于UIWidget需要add CCNode控件的问题
- Docker下载安装
- 知到计算机应用基础见面课答案,知到计算机应用基础(湖南环境生物职业技术学院)见面课答案...
- 虚拟机u盾怎么使用_Linux下如何使用网银
- The Active Side of Stereopsis: Fixation Strategy and Adaptation to Natural Environments
- 鲁宾逊微积分教材版权的“知识共享”授权方式
- mysql的时间格式化问题(上下午)
- 痞子衡嵌入式:其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API
- winform 三层(BLL.DAL.MODEL)
- Google Earth Engine python ——从谷歌地球引擎(GEE)上的点提取栅格值的实现
- 计算机无法连接到远程计算机上的另一个控制台会话