您的位置:首页 > 移动开发 > Android开发

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检查你代码可能出错的地方并向你报告其错误信息,库里有很多相关注解,因此我在这里就详细介绍其中几个,但你可以清楚地去查看这文档来了解其他的注解。

@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
,因此已经可以使用它们了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: