zoukankan      html  css  js  c++  java
  • @SuppressLint vs @TargetApi

    @TargetApi and @SuppressLint have the same core effect: they suppress the Lint error.

    The difference is that with @TargetApi, you declare, via the parameter, what API level you have addressed in your code, so that the error can pop up again if you later modify the method to try referencing something newer than the API level cited in @TargetApi.

    For example, suppose that, instead of blocking the StrictMode complaints about your networking bug, you were trying to work around the issue of AsyncTask being serialized on newer versions of Android. You have a method like this in your code to opt into the thread pool on newer devices and use the default multithread behavior on older devices:

    @TargetApi(11)
    static public<T> void executeAsyncTask(AsyncTask<T,?,?> task, T...params){

    if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.HONEYCOMB){ task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params);
      }else{ task.execute(params);
      }
    }

    Having @TargetApi(11) means that if Lint detects that I am using something newer than my android:minSdkVersion, but up to API Level 11, Lint will not complain. In this case, that works. If, however, I modified this method to reference something that wasn't added until API Level 14, then the Lint error would appear again, because my @TargetApi(11) annotation says that I only fixed the code to work on API Level 11 and below, not API Level 14 and below.

    Using @SuppressLint('NewApi'), I would lose the Lint error for any API level, regardless of what my code references and what my code is set up to handle.

    Hence, @TargetApi is the preferred annotation, as it allows you to tell the build tools "OK, I fixed this category of problems" in a more fine-grained fashion.

  • 相关阅读:
    实用的DBHelper帮助类
    无刷新分页技术
    Android回部古剑之ViewFlipper之仙人指路
    Android玉石短剑之GridView之精挑细选
    构建门户之利刃Liferay Portal系统架构
    Android回部古剑之ViewFlipper之翻来覆去
    Android凝碧剑之CalendarView之万年历
    自己动手写Web容器之TomJetty之四:静态页面起步
    Android白虹剑之EditView之非法输入
    AssetBundle压缩/内部结构/下载和加载
  • 原文地址:https://www.cnblogs.com/qiengo/p/3001996.html
Copyright © 2011-2022 走看看