keep 在编写混淆规则的时候,直接带keep注解的可以在混淆规则脚本中,可以直接如此来keep//比如keep主该cass
@keep
class Bean{
...
}
#保留注解,如果不添加此行会导致我们的@Keep注解失效
-keepattributes *Annotation*
-keep @android.support.annotation.Keep class **
IntDef 用来代替Enum枚举,与枚举相比,省内存,省空间。private static final int RESTART = 1 ;
private static final int REVERSE = 2 ;
@IntDef ( { RESTART, REVERSE} )
@Retention ( RetentionPolicy. SOURCE)
public @interface RepeatMode { }
StringDefpublic static final String DEV = "dev" ;
public static final String OFFICIAL = "official" ;
@StringDef ( { DEV, OFFICIAL} )
@Retention ( RetentionPolicy. SOURCE)
private @interface LogType {
}
Nullable 用来声明方法返回不能为空,参数不能为空,在IDE编码中可以尽量避免空指针问题。
private void init ( @Nullable AttributeSet attrs)
@Nullable
public LottieComposition getComposition ( ) {
return composition;
}
NonNull 用来声明方法返回不为空,参数不能为空。也可以避免多余的判空问题。
@NonNull
@Override
public LayoutInflater getLayoutInflater ( )
public LauncherView ( @NonNull Context context)
intRange
public void setAlpha ( @IntRange ( from = 0 , to = 255 ) int alpha) {
this . alpha = alpha;
}
MainThread 声明必须在主线程调用
@MainThread
public void requestPermissionIfNeed ( Activity activity, int storagePermissionType)
WorkerThread 声明必须在子线程调用
@WorkThread
public void requestPermissionIfNeed ( Activity activity, int storagePermissionType)