Improving Your Code With Android Support Annotations(译文)
2015-07-22 00:16
615 查看
英文版文章来源:http://www.michaelevans.org/blog/2015/07/14/improving-your-code-with-android-support-annotations/?utm_source=Android+Weekly&utm_campaign=7e9fa187cb-Android_Weekly_162&utm_medium=email&utm_term=0_4eb677ad19-7e9fa187cb-337882765
如果你还没有听说过Android Support Annotations库的话,你会错过有助你捕获APP错误的一个整洁的新程序包裹,在这个库中,也包含一系列Java注解,这些注解有助于Android Studio检查你代码可能出错的地方并向你报告其错误信息,库里有很多相关注解,因此我在这里就详细介绍其中几个,但你可以清楚地去查看这文档来了解其他的注解。
转换这个:
变成这个
另外指导:我们可以进一步拿这个例子使用
现在你传一个非字符资源的ID给方法,你会得到这样的信息:
(那里所有资源类型的资源注解,如:
如果你曾经很烦
最重要的部分是-如果你正在使用
如果你还没有听说过Android Support Annotations库的话,你会错过有助你捕获APP错误的一个整洁的新程序包裹,在这个库中,也包含一系列Java注解,这些注解有助于Android Studio检查你代码可能出错的地方并向你报告其错误信息,库里有很多相关注解,因此我在这里就详细介绍其中几个,但你可以清楚地去查看这文档来了解其他的注解。
@NonNull / @Nullable
@NonNull和
@Nullable也许support annotation最基本的使用,也是最有用其中两个之一,用这两个注解一个参数或方法分别指示这个参数或方法的返回值可以为空或不可以为空,现在Android Studio可以给我们一些非常好的提醒,在做一些不安全的事情时。
转换这个:
变成这个
另外指导:我们可以进一步拿这个例子使用
@CheckResult注解,来告诉我们这个方法返回值是我们想使用的值,而不是单边作用(在这里我猜的是仅仅调用方法,而没有使用其结果值)的方法。
@StringRes / @DrawableRes / etc.
你曾经是否有过调用TextView的setText方法,得到一个很神秘的异常
android.content.res.Resources$NotFoundException: String resource ID #0x3039呢?如果你传递一个整数给setText,TextView会认为它是字符资源的ID,且查看其ID并设置其字符内容,假如那里有一种方法仅仅指示整数值并不是这个方法要的资源ID…那就是
@StringRes可以解决。
public void setText(@StringRes int id) { // Do something like getString(id), etc. }
现在你传一个非字符资源的ID给方法,你会得到这样的信息:
(那里所有资源类型的资源注解,如:
@DrawableRes,
@ColorRes,
@InterpolatorRes)
@Keep
今天我发现一个新的support annotation@keep,根据support annotation文档,这个注解还不没有被Gradle插件添加,但它可以保留被注解的方法和类,在优化APP代码时。
如果你曾经很烦
-keep class com.foo.bar { public static <methods> }语句,这条语句你需要常常来告知Proguard Gods,当需要一些方法和类不被优化时,这种方式会让你感到痛苦且头疼,这个方便注解会告知Proguard独留方法和类不被优化,就像这样:
public class Example { @Keep public void doSomething() { // hopefully this method does something } ... }
最重要的部分是-如果你正在使用
appcompat-v7,你已经导入了
support-annotations,因此已经可以使用它们了。
相关文章推荐
- 【攻克Android (5)】布局
- js判断手机端(Android手机还是iPhone手机)
- js判断手机端(Android手机还是iPhone手机)
- 构建Android开发环境
- android gif表情
- Android SDK
- URL not found: D:\android-sdk-windows\temp\sysimg_x86-18_r02.zip (拒绝访问。)
- android实现侧滑菜单
- androidmainfest.xml详解
- Android studio .9.png图片报错问题解决
- convertView,这个是Android在为我们而做的缓存机制。
- Android之——拦截短信
- Android中的动态加载机制
- Android之——拦截外拨电话
- Android(java)学习笔记86:案例短信发送器
- This Handler class should be static or leaks might occur Android警告处理
- android locationManager定位
- android动画模块 Tween 动画的实现原理 详解
- [Android] Service服务详解以及如何使service服务不被杀死
- Android socket在系统休眠情况下调研