Support Annotation Library是从Android Support Library19.1开始引入的一个全新的函数包。包含一系列的元注解,用来帮助开发者在编译间发现可能存在的bug。

下面我们看看都有哪些注解吧!

1、Nullness注解

  • @Nullable 作用于函数参数或返回值,标记参数或返回值可以为空。
  • @NonNull 同上,但标记参数或返回值不能为空。

2、资源类型注解

资源在Android通常是以整型值表示的,并保存在R.java中。资源类型的注解作用于函数参数、返回值及类的变量,在support-annotations-23.1.1中,每一个资源类型对应一个注解。

  • AnimatorRes:标记整型值是android.R.animator类型;
  • AnimRes:标记整型值是android.R.anim类型;
  • AnyRes:标记整型值是任何一种资源类型,如果确切知道表示的是哪一种具体资源的话,建议使用显式指定;
  • ArrayRes:标记整型值是android.R.array类型;
  • BoolRes:标记整型值是布尔类型;
  • ColorRes:标记整型值是android.R.color类型;
  • DrawableRes:标记整型值是android.R.drawable类型;
  • FractionRes:标记整型值是fraction类型,这个比较少见,这种类型资源常见于Animation XML中,比如50%p,表示占parent的50%;
  • IdRes:标记整型值是android.R.id类型,常见资源;
  • IntegerRes:标记整型值是android.R.integer类型;
  • Interpolator:标记整型值是android.R.interpolator类型;
  • MenuRes:标记整型值是android.R.menu类型;
  • LayoutRes:标记整型值是android.R.layout类型;
  • PlursRes:标记整型值是android.R.plurals类型,表示复数字符串类型;
  • RawRes:标记整型值是android.R.raw类型;
  • StringRes:标记整型值是android.R.string类型;
  • StyleableRes::标记整型值是android.R.styleable类型;
  • StyleRes:标记整型值是android.R.style类型;
  • TransitionRes:标记整型值是android.R.transition类型;
  • XmlRes:标记整型值是android.R.xml类型;

3、类型定义注释

  • @IntDef 注释用来创建一个整型类型定义的新注释,我们可以用这个新注释来标记自己编写的api;

4、线程注释

  • @UIThread :标记运行在UI线程。一个UI线程是一个activity运行所在的主窗口,对于一个应用而言,可能存在多个UI线程,每个UI线程对应不同的窗口;
  • @MainThread:标记运行在主线程。一个应用只有一个主线程,主线程也是@UIThread线程,通常情况下,我们使用@MainThread来注释生命周期相关函数,使用@UIThread来注释视图相关函数,一般情况下,@MainThrea和@UIThread是可以互换使用的;
  • @WorkerThread:标记运行在后台的线程;
  • @BinderThread:标记运行在Binder线程;

5、RGB颜色注释

  • @ColorInt:标记参数类型需要传入RGB或者ARGB颜色整型值;

6、值范围注释

  • @Size:对于类似数组、集合和字符串之类的参数,该注释表示这些参数的大小;如:@Size(2) 可以表示数组元素个数是2;
  • @IntRange:参数类型是int或者long;
  • @FloatRange:参数类型是float或double;

7、权限注解

  • @RequiresPermission:为了在 编译期间及时发现缺失的权限,可使用该注释;

8、重写函数注释

  • @CallSuper:如果api允许调用者重写某个函数,但同时要求重写的函数需要调用被重写的函数,否者代码逻辑会错误,那么可以使用@CallSuper注释来提示开发者;

9、返回值注释

  • @CheckResult:如果我们编写的函数需要调用者对返回值做某些操作,那么可以使用@CheckRrsult来提示开发者

10、@VisibleForTesting:单元测试中可能需要访问到一些不可见的类、函数、变量,这时可以使用@VisibleForTesting注释来使其对测试可见;

11、@Keep:用来标记在Proguard混淆过程中不需要混淆的类或者方法;

Support Annotation Library使用详解相关推荐

  1. Android Support Annotation Library使用详解

    概述 Support Annotation Library是在Android Support Library19.1版本开始引入的一个全新的函数包,它包含了诸多有用的元注解.用来帮助开发者在编译期间发 ...

  2. Android进阶系列之Support Annotation Library使用详解

    *本篇文章已授权微信公众号 hongyangAndroid (鸿洋)独家发布 在Android开发中,注解使用那是相当之频繁,对于没有了解过注解的猿友来说,看起来那是相当费劲儿.那今天我就来详细的瞅瞅 ...

  3. Support Annotation Library 使用详解

    Support Annotation Library 是提供了一系列元注解,用来帮助开发者在编译期间发现可能存在的BUG. 1. Nullness 注解 此类注解包含 : @Nullable 作用于函 ...

  4. Support Annotation Library 总结

    Support Annotation Library 是一个元注解包,它主要用来帮助开发者在编译期间发现可能存在的BUG. 其原理就是通过注解标记的方式,标记传参和返回,从而启动规范传参和返回的作用. ...

  5. Java编译时注解处理器(Annotation Processor)详解

    上篇文章我们使用注解+反射实现了一个仿ButterKnife功能的示例.考虑到反射是在运行时完成的,多少会影响程序性能.因此,ButterKnife本身并非基于注解+反射来实现的,而是用Annotat ...

  6. Servlet3.0新特性WebFilter(Annotation Filter)详解

    摘要: Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,是Servlet3.0的新特性,不需要在web.xml进行配置,简化了配置. Name T ...

  7. Spring @transactional annotation 事务使用详解

    来源:http://www.yihaomen.com/article/java/412.htm annotation 方式写程序越来越称谓主流了,以前用hibernate 也用 xml 一大堆配置文件 ...

  8. Java Annotation自定义注解详解

    在开发过程中总能用到注解,但是从来没有自己定义过注解.最近赋闲在家,研究整理了一番,力求知其然知其所以然. 本文会尝试描述什么是注解,以及通过一个Demo来说明如何在程序中自定义注解.Demo没有实际 ...

  9. Library Module详解

    Create an Android Library 原文:https://developer.android.com/studio/projects/android-library.html Andr ...

最新文章

  1. ISME: 北大吴晓磊课题组揭示合作演化新机制:“自私”驱动合作关系的建立?...
  2. 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
  3. 黑马lavarel教程---9、缓存操作
  4. Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
  5. Java生成CRC16数据校验码
  6. 'pip3' 不是内部或外部命令,也不是可运行的程序或批处理文件
  7. 工业以太网交换机可以家用吗?
  8. 基于Nokia S60的游戏开发之二
  9. (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)
  10. linux DNS安装配置
  11. CAN笔记(23) CanFestival移植
  12. 安装torchvision时,报错error: command ‘aarch64-linux-gnu-gcc‘ failed with exit status 1
  13. 《计算机网络 自顶向下方法》(第7版)答案(第九章)
  14. 面试常见的八股文记录
  15. 程序员初学者应该如何自学编程
  16. 解决win10+Ubuntu20.0.4双系统,win10时间错误问题
  17. mac系统我的世界服务器,我的世界Mac版怎么联机?
  18. js-js数据结构和算法-递归思想-斐波那契数-动态规划-贪心
  19. java实现抽奖游戏,java实现抽奖功能解析
  20. 超高频RFID服装供应链管理系统

热门文章

  1. rubymine remote远程linux 并同步代码
  2. 【脱普】电阻分类、电阻常用参数、贴片电阻封装、电阻功能、阻值识读
  3. 计蒜客 家谱 vector临接矩阵+dfs
  4. java自动转换需要的开头_【Java基础】Java把\u开头的Unicode编码转换成汉字
  5. NOIP 2013 提高组初赛 青蛙跳荷叶
  6. Linux和PHP 开发参考消息 php博文+Linux镜像+http服务器+存储技术+框架+视频+好书+通信...
  7. 10086视频客服所需要的技能点
  8. 结构性模型——组合模式
  9. MMDetection的学习笔记
  10. 喜提北极代码库贡献者勋章(Arctic Code Vault Contributor)