昨晚看到一篇好文章。然后是英文的。所以决定翻译分享给大家。这是原文链接:http://www.michaelevans.org/blog/2015/07/14/improving-your-code-with-android-support-annotations/


假设你还没听说过Android支持注解库,那么你将错过能够帮助你捕获bug的一个轻便灵活的新包。

在这个库中包括了非常多Java的注解,它将帮助Android Studio为了可能出现的错误来检查你的代码,而且反馈通知给你。这个库有相当多的注解。在此我仅仅打算说明几个,可是假设你须要其余部分完整清晰的说明文档,能够在这里查看:check out the docs

@NonNull 与 @Nullable

@NonNull 与 @Nullable 可能是支持注解中最基础的,可是绝大多数情况下还是非常实用的。 假设參数或者方法的返回值可能是null为空的,则以凝视一个參数或者方法来表示。

眼下Android Studio 给予了一个非常好的警告提示。在我们做了一些不安全严谨的编码操作的时候。

比如这样:

改动后是这样:

更赞的是:我们甚至能够像样例一样更进一步的使用@CheckResult注解,来告诉我们该方法的返回值类型是我们估计要使用的,而不是错误效果的方法:

@StringRes 与 @DrawableRes 等等

你是不是在TextView上调用setText方法。常常会出现莫名其妙的异常java android.content.res.Resources$NotFoundException: String resource ID #0x3039? 假设设置了一个整型数给setText。TextView会假定这个整型数是一个字符串的资源id,为了设置string文本将会查询这个整数。

对于整型数是无效的资源id的问题,能够通过@StringRes 注解来补救。

public void setText(@StringRes int id) {
// Do something like getString(id), etc.
}

假设你设置无效的字符串资源id到setText方法里。就会例如以下图显示:

这个库还为全部的资源类型都提供了相相应的资源注解:java@DrawableRes, @ColorRes,@InterpolatorRes, 等等。

@Keep

今天发现了一个新支持注解@Keep。依据注解文档描写叙述,这个注解还没有连接到Gradle插件中,可是当在混淆app的时候通过凝视方法和类能够被保留。

这个便捷的注解就通知混淆器保留相应的方法和类,就像这样:

public class Example {
@Keep public void doSomething() {
// hopefully this method does something
}
...
}

假设你正在用的是appcompat-v7的包,就已经包括了 support-annotations的库,那就開始愉快的使用吧!(逗比这么简单的文章还要你翻译。臭不要脸的…Orz!


以上check out the docs链接处须要翻墙才干打开!

使用Android注解来改善代码的更多相关文章

  1. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  2. Android注解使用之使用Support Annotations注解优化代码

    前言: 前面学习总结了Java注解的使用,博客地址详见Java学习之注解Annotation实现原理,从本质上了解到什么注解,以及注解怎么使用?不要看见使用注解就想到反射会影响性能之类,今天我们就来学 ...

  3. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  4. Android注解支持(Support Annotations)

    注解支持(Support Annotations) Android support library从19.1版本开始引入了一个新的注解库,它包含很多有用的元注解,你能用它们修饰你的代码,帮助你发现bu ...

  5. android注解使用详解(图文)

    在使用Java的SSH框架的时候,一直在感叹注解真是方便啊,关于注解的原理,大家可以参考我的另一片文章Java注解详解.最近有时间研究了android注解的使用,今天与大家分享一下. android中 ...

  6. Android Studio环境下代码混淆+签名打包

    Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...

  7. Android注解框架实战-ButterKnife

    文章大纲 Android注解框架介绍 ButterKnife实战 项目源码下载   一.框架介绍 为什么要用注解框架?  在Android开发过程中,我们经常性地需要操作组件,操作方法有findVie ...

  8. 开发自己的山寨Android注解框架

    目录 开发自己的山寨Android注解框架 开发自己的山寨Android注解框架 参考 Github黄油刀 Overview 在上一章我们学习了Java的注解(Annotation),但是我想大家可能 ...

  9. Android注解支持(Support Annotations) (转)

    原文地址:http://www.flysnow.org/2015/08/13/android-tech-docs-support-annotations.html 注解支持(Support Annot ...

随机推荐

  1. SVM 与 LR的异同

    LR & SVM 的区别 相同点 LR和SVM都是分类算法. 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的. LR和SVM都是监督学习算法. LR和SVM ...

  2. PHP变量的生命周期

    变量不仅有其特定的作用范围,还有其存活的周期--生命周期.变量的生命周期指的是变量可被使用的一个时间段,在这个时间段内变量是有效的,一旦超出这个时间段变量就会失效,我们就不能够再访问到该变量的值了. ...

  3. Python web 周总结

    按顺序查询 order_by()    order_by(- ) 下拉框默认显示 <select name="canteen_type_id" id="" ...

  4. bzoj 4295 [PA2015]Hazard 贪心,暴力

    [PA2015]Hazard Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 69  Solved: 19[Submit][Status][Discus ...

  5. spring-boot项目热部署以及spring-devtools导致同类不能转换

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  6. scrapy之spiders

    官方文档:https://docs.scrapy.org/en/latest/topics/spiders.html# 一句话总结:spider是定义爬取的动作(是否跟进新的链接)及分析网页结构(提取 ...

  7. Junit框架使用--JUnit常用断言及注解

    从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...

  8. SharepPoint 2013安装体会

    SharePoint 2013出来了,一直没有找到合适的机器来安装.前天腾出来一台内存8G的机器,决定在Hyper-V上安装在一台虚机,然后装个Windows 2012,再装SharePoint 20 ...

  9. vue.js源码学习分享(二)

    /** * Check if value is primitive//检查该值是否是个原始值 */ function isPrimitive (value) { return typeof value ...

  10. 洛谷——P2527 [SHOI2001]Panda的烦恼

    P2527 [SHOI2001]Panda的烦恼 题目描述 panda是个数学怪人,他非常喜欢研究跟别人相反的事情.最近他正在研究筛法,众所周知,对一个范围内的整数,经过筛法处理以后,剩下的全部都 ...