-
-
Notifications
You must be signed in to change notification settings - Fork 97
基础使用
-
SingleClick
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | long | 1000 | 快速点击的间隔(ms) |
1.使用@SingleClick
标注点击的方法。注意点击的方法中一定要有点击控件View作为方法参数,否则将不起作用。
2.可以设置快速点击的时间间隔,单位:ms。不设置的话默认是1000ms。
@SingleClick(5000)
public void handleOnClick(View v) {
XLogger.e("点击响应!");
ToastUtil.get().toast("点击响应!");
hello("xuexiangjys", "666666");
}
-
Permission
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | String[] | / | 需要申请权限的集合 |
1.使用@Permission
标注需要申请权限执行的方法。可设置申请一个或多个权限。
2.使用@Permission
标注的方法,在执行时会自动判断是否需要申请权限。
@SingleClick
@Permission({PermissionConsts.CALENDAR, PermissionConsts.CAMERA, PermissionConsts.LOCATION})
private void handleRequestPermission(View v) {
}
1.使用@MainThread
标注需要在主线程中执行的方法。
2.使用@MainThread
标注的方法,在执行时会自动切换至主线程。
@MainThread
private void doInMainThread(View v) {
mTvHello.setText("工作在主线程");
}
-
IOThread
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | ThreadType | ThreadType.Fixed | 子线程的类型 |
1.使用@IOThread
标注需要在io线程中执行的方法。可设置线程池的类型ThreadType
,不设置的话默认是Fixed类型。
线程池的类型如下:
- Single:单线程池
- Fixed:多线程池
- Disk:磁盘读写线程池(本质上是单线程池)
- Network:网络请求线程池(本质上是多线程池)
2.使用@IOThread
标注的方法,在执行时会自动切换至指定类型的io线程。
@IOThread(ThreadType.Single)
private String doInIOThread(View v) {
return "io线程名:" + Thread.currentThread().getName();
}
-
DebugLog
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
priority | int | 0 | 日志的优先级 |
1.使用@DebugLog
标注需要打印的方法和类。可设置打印的优先级,不设置的话默认优先级为0。注意:如果打印的优先级比XAOP.setPriority
设置的优先级小的话,将不会进行打印。
2.使用@DebugLog
标注的类和方法在执行的过程中,方法名、参数、执行的时间以及结果都将会被打印。
3.可调用XAOP.setISerializer
设置打印时序列化参数对象的序列化器。
4.可调用XAOP.setLogger
设置打印的实现接口。默认提供的是突破4000限制的logcat日志打印。
@DebugLog(priority = Log.ERROR)
private String hello(String name, String cardId) {
return "hello, " + name + "! Your CardId is " + cardId + ".";
}
-
MemoryCache
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | String | "" | 内存缓存的key |
enableEmpty | boolean | true | 对于String、数组和集合等,是否允许缓存为空 |
1.使用@MemoryCache
标注需要内存缓存的方法。可设置缓存的key,不设置的话默认key为方法名(参数1名=参数1值|参数2名=参数2值|...)
,当然你也可以修改key的自动生成规则,你只需要调用XAOP.setICacheKeyCreator
即可。
2.标注的方法一定要有返回值,否则内存缓存切片将不起作用。
3.使用@MemoryCache
标注的方法,可自动实现缓存策略。默认使用的内存缓存是LruCache
。
4.可调用XAOP.initMemoryCache
设置内存缓存的最大数量。默认是Runtime.getRuntime().maxMemory() / 1024) / 8
@MemoryCache
private String hello(String name, String cardId) {
return "hello, " + name + "! Your CardId is " + cardId + ".";
}
-
DiskCache
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | String | "" | 内存缓存的key |
cacheTime | long | -1 | 缓存时间【单位:s】,默认是永久有效 |
enableEmpty | boolean | true | 对于String、数组和集合等,是否允许缓存为空 |
1.使用@DiskCache
标注需要磁盘缓存的方法。可设置缓存的key,不设置的话默认key为方法名(参数1名=参数1值|参数2名=参数2值|...)
,当然你也可以修改key的自动生成规则,你只需要调用XAOP.setICacheKeyCreator
即可。
2.可设置磁盘缓存的有效期,单位:s。不设置的话默认永久有效。
3.标注的方法一定要有返回值,否则磁盘缓存切片将不起作用。
4.使用@DiskCache
标注的方法,可自动实现缓存策略。默认使用的磁盘缓存是JakeWharton的DiskLruCache
。
5.可调用XAOP.initDiskCache
设置磁盘缓存的属性,包括磁盘序列化器IDiskConverter
,磁盘缓存的根目录,磁盘缓存的最大空间等。
@DiskCache
private String hello(String name, String cardId) {
return "hello, " + name + "! Your CardId is " + cardId + ".";
}
-
Safe
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | String | "" | 捕获异常的标志 |
1.使用@Safe
标注需要进行异常捕获的方法。可设置一个异常捕获的标志Flag,默认的Flag为当前类名.方法名
。
2.调用XAOP.setIThrowableHandler
设置捕获异常的自定义处理者,可实现对异常的弥补处理。如果不设置的话,将只打印异常的堆栈信息。
3.使用@Safe
标注的方法,可自动进行异常捕获,并统一进行异常处理,保证方法平稳执行。
@Safe(TRY_CATCH_KEY)
private int getNumber() {
return 100 / 0;
}
-
Intercept
属性表
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
value | int[] | / | 拦截类型 |
1.使用@Intercept
标注需要进行拦截的方法和类。可设置申请一个或多个拦截类型。
2.如果不调用XAOP.setInterceptor
设置切片拦截的拦截器的话,自定义拦截切片将不起作用。
3.使用@Intercept
标注的类和方法,在执行时将自动调用XAOP
设置的拦截器进行拦截处理。如果拦截器处理返回true的话,该类或方法的执行将被拦截,不执行。
4.使用@Intercept
可以灵活地进行切片拦截。比如用户登录权限等。
@SingleClick(5000)
@DebugLog(priority = Log.ERROR)
@Intercept(3)
public void handleOnClick(View v) {
XLogger.e("点击响应!");
ToastUtil.get().toast("点击响应!");
hello("xuexiangjys", "666666");
}
@DebugLog(priority = Log.ERROR)
@Intercept({1,2,3})
private String hello(String name, String cardId) {
return "hello, " + name + "! Your CardId is " + cardId + ".";
}
【注意】:当有多个切片注解修饰时,一般是从上至下依次顺序执行。