Android Support Annotation

@Nullable

用来标注给定的参数或者返回值可以为null

@NonNull

用来标注给定的参数或者返回值不能为null

资源类型注解

各种资源类型的限定。

@StringRes

@DrawableRes

@ColorRes

@InterpolatorRes

...

@AnyRes

被用来标注一个未知的特殊类型的资源,但是它必须是一个资源类型。

类型定义注解

@IntDef

@StringDef

可以创建另外一个注解,然后用@IntDef指定一个你期望的整型常量值列表,最后你就可以用这个定义好的注解修饰你的API了。

@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
@Retention(RetentionPolicy.SOURCE)
public @interface NavigationMode {}

public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;

@NavigationMode
public abstract int getNavigationMode();

public abstract void setNavigationMode(@NavigationMode int mode);

线程注解

(Support library 22.2及其之后版本支持)

@UiThread

@MainThread

@WorkerThread

@BinderThread

@UiThread还是@MainThread?

通常是把和生命周期有关的用@MainThread标注,和View层级结构相关的用@UiThread标注。但是由于@MainThread本质上是一个@UiThread,而大部分情况下@UiThread又是一个@MainThread,所以工具(lint ,Android Studio,等等)可以把他们互换,所以你能在一个可以调用@MainThread方法的地方也能调用@UiThread方法,反之亦然。

RGB颜色整型

@ColorRes

资源型

@ColorInt

颜色值

值约束

@IntRange

@FloatRange

如果你的参数是一个float或者double类型,并且一定要在某个范围内,你可以使用@FloatRange注解:

public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha;

@Size

来限定集合的大小

权限注解

@RequiresPermission

方法重写

@CallSuper

如果你的API允许使用者重写你的方法,但是呢,你又需要你自己的方法(父方法)在重写的时候也被调用,这时候你可以使用@CallSuper标注。

@CallSuper
protected void onCreate(@Nullable Bundle savedInstanceState) {
}

返回值

@CheckResult

如果你的方法返回一个值,你期望调用者用这个值做些事情,那么你可以使用这个注解标注。

@VisibleForTesting

你可以把这个注解标注到类、方法或者字段上,以便你在测试的时候可以使用他们。

@Keep

这个注解标注的类和方法在混淆的时候将不会被混淆。

results matching ""

    No results matching ""