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)...相关推荐

  1. 我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...

    Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi") 例如:AndroidManifest.xml中,我们配置了sdk版本的 ...

  2. android服务进阶,我的Android进阶之旅------Android服务的生命周期回调方法

    先引用一段官网上的文字 ======================================================================================== ...

  3. 我的Android进阶之旅------Android利用Sensor(传感器)实现水平仪功能的小例

    这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端.    利用方向传感器返回的第一个参数,实现了一个指南针小应用.   ...

  4. 我的Android进阶之旅------Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  5. 我的Android进阶之旅------Android项目目录结构分析

    此文章来自"博客园"博主,仅在此借鉴,学习 1.HelloWorld项目的目录结构 1.1.src文件夹 1.2.gen文件夹 1.3.Android 2.1文件夹 1.4.ass ...

  6. 我的Android进阶之旅------android Matrix图片随意的放大缩小,拖动(转)

    step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable-hdpi目录下,如下图所示: step2: 设置应用的UI界面,在main.xml中设置: [html] v ...

  7. 我的Android进阶之旅------Android中adb install 安装错误常见列表

    adb的安装过程分为传输与安装两步. 在出错后,adb会报告错误信息,但是信息可能只是一个代号,需要自己定位分析出错的原因. 下面是从网上找到的几种常见的错误及解决方法: 1.INSTALL_FAIL ...

  8. 我的Android进阶之旅------Android Studio 快捷键整理分享

    正式转战Android Studio了,首先把Android Studio的快捷键摘录下来,以备后用. (官网的快捷键列表如下  https://developer.android.com/studi ...

  9. 我的Android进阶之旅------Android Gusture 手势识别小案例

    Step1: 生成一个Android Gusture Builder程序用于画Gusture然后存储起来用于其它的项目 首先导入  android SDK \android-sdk-windows\s ...

最新文章

  1. VM 7 下ubuntu安装vmtools
  2. Windows上的原生Linux容器(盆盆的Kubecon课程分享)
  3. Fastboot简介
  4. 2019.2.14 t3 车辆销售
  5. python库整理:collections.defaultdict
  6. 不属于mysql常量的是_R256是内部“字”继电器WR25的( )号位。_学小易找答案
  7. Vim的使用和快捷键介绍
  8. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
  9. centos6.9搭建lnmp环境
  10. cocostudio学习之关于UIWidget需要add CCNode控件的问题
  11. Docker下载安装
  12. 知到计算机应用基础见面课答案,知到计算机应用基础(湖南环境生物职业技术学院)见面课答案...
  13. 虚拟机u盾怎么使用_Linux下如何使用网银
  14. The Active Side of Stereopsis: Fixation Strategy and Adaptation to Natural Environments
  15. 鲁宾逊微积分教材版权的“知识共享”授权方式
  16. mysql的时间格式化问题(上下午)
  17. 痞子衡嵌入式:其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API
  18. winform 三层(BLL.DAL.MODEL)
  19. Google Earth Engine python ——从谷歌地球引擎(GEE)上的点提取栅格值的实现
  20. 计算机无法连接到远程计算机上的另一个控制台会话

热门文章

  1. Linux(Ubuntu 14.0)
  2. SilverLight MD5加密
  3. 合并百度影音的离线数据 with python 第二版 基于yield
  4. JavaScript在HTML中的应用2
  5. hdu2844 Coins(普通的多重背包 + 二进制优化)
  6. ASP.NET MVC数据标记验证
  7. 堆排序可运行完整C语言,Java语言,python实现
  8. 我30岁了。现在开始编程,会不会太晚?
  9. python orm_python的orm
  10. SpringBoot项目的 log4j漏洞解决—JeecgBoot