注解的作用
向 Lint 之类的代码检查工具提供提示,帮助检测这些更细微的代码问题。您可以将注解作为元数据标记附加至变量、参数和返回值,用于检查方法返回值、传递的参数以及本地变量和字段。如果与代码检查工具搭配使用,注解可以帮助您检测问题,例如 null 指针异常和资源类型冲突。Android 通过注解支持库支持各种注解。我们可以通过 android.support.annotation 软件包获取该库。
注解解析
-
资源注解: @StringRes、@DrawableRes、@DimenRes、@ColorRes、@ColorInt、@InterpolatorRes、@AnyRes,以检查资源参数是否包含 R.string 引用;
-
线程注解:@MainThread、@UiThread、@WorkerThread、@BinderThread、@AnyThread;
-
值约束注解:@IntRange、@FloatRange 和 @Size(例如:public void setAlpha(@IntRange(from=0,to=255) int alpha) { … },@Size(min=2));
-
权限注解:
@RequiresPermission(Manifest.permission.SET_WALLPAPER)
@RequiresPermission(allOf = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
@RequiresPermission.Read(@RequiresPermission(READ_HISTORY_BOOKMARKS))
@RequiresPermission.Write(@RequiresPermission(WRITE_HISTORY_BOOKMARKS)); -
间接权限:public abstract void startActivity(@RequiresPermission Intent intent, @Nullable Bundle) {...};
-
返回值注解:
@CheckResult(suggest="#enforcePermission(String,int,int,String)")
public abstract int checkPermission(@NonNull String permission, int pid, int uid);
该注解可以验证实际使用的是方法的结果还是返回值,它可以确保实际引用方法的返回值。它还会将 enforcePermission() 方法指定为要向开发者建议的替换方法; -
CallSuper 注解:以确保任何替换方法实现都会调用父类的该方法;如:super.onCreate();
-
@IntDef 和 @StringDef 注解,以便能够创建整型和字符串集的枚举注解来验证其他类型的代码引用。
-
代码可访问性注解:@VisibleForTesting 和 @Keep 注解可以表示方法、类或字段的可访问性,
@VisibleForTesting 注解指示一个代码块的可见性是否高于让代码变得可测试所需要的水平。
@Keep 注解可以确保如果在构建时缩减代码,标注的元素不会移除。它一般会添加到通过反射访问的方法和类中,以阻止编译器将代码视为未使用。
参考网址:https://developer.android.google.cn/studio/write/annotations
网友评论