使用 Annotation 改善 Android 代码

简评:作为一名开发者,没有人不想写出高质量的代码,善用注解就能帮我们大大改善代码质量。

Annotation(注解)是用于提供有关其他数据信息的,这里我们讨论如何用 annotation 改善我们的 Android 代码。

Android 官方已经支持了 annotation,可以用下面的方式来集成:

compile ‘com.android.support:support-annotations:x.x.x’

下面介绍一些最常用的 annotation:

@Nullable 和 @NonNull,用来检查给定的变量、参数或返回值是否能够为空。

  • @Nullable,表示变量、参数或返回值可以为 null。
  • @NonNull,表示变量、参数或返回值不能为 null。

例如:

@NonNull
public View getView(@Nullable String s1, @NonNull String s2) {
  // s1 can be null
  // s2 should not be null
  // it must return non null view
}

当你这样调用时:

View view = getView("Amit", null);

Android Studio 会警告你 s2 不应为空。

资源相关注解

肯定都知道在 Android 中的资源文件都是使用 Integer 类型值作为 resId,因为所有的资源 ID 都是 Integer 类型,所以这时可以用注解来声明要传入的是什么资源类型。

例如:

public void setText(@StringRes int resId) {
  // resId must be string resources
  // resId should not be a normal int
}

当你直接传入一个普通数字时:

textView.setText(56);

Android Studio 就会警告没有传入 R.string 引用。

线程注解

线程注解用于检查指定方法是否是在指定线程中被调用的。

目前支持的有:

  • @MainThread
  • @UiThread
  • @WorkerThread
  • @BinderThread
  • @AnyThread

用法就是直接在特定方法上声明即可。

数值限制类注解

有些时候,我们需要对参数做一些限制约束,这时可以使用 @IntRange, @FloatRange 和 @Size 来校验参数。

比如在下面的例子中,我们用到 @IntRange 来确保传入的整数值在 0 至 255 之间。

public void setAlpha(@IntRange(from=0,to=255) int alpha) {}

权限注解

@RequestPermission 注解能检查方法调用者是否有某些权限,但只局限于检查 manifest 中是否声明了权限,不适用与 Android M 之后的动态权限。

@RequiresPermission(Manifest.permission.SET_WALLPAPER)public abstract void setWallpaper(Bitmap bitmap) throws IOException;

当 manifest 中没有写 SET_WALLPAPER 权限时,就会显示警告。

更多关于 Android annotation 的知识,大家感兴趣的可以去官网进一步学习:annotations
原文:Improve Your Android Coding Through Annotations

扩展阅读:

  • Android 中使用持续集成
  • 换一个角度思考如何给日志分级

你可能感兴趣的:(使用 Annotation 改善 Android 代码)