## (一).前言:
前面我们已经对于AndroidAnnotations框架的事件绑定做了讲解,今天我们开始具体学习一下线程处理(Threading)方法。
FastDev4Android框架项目地址:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)
已更新如下:
![](https://box.kancloud.cn/2016-01-18_569c8eb29a4ea.jpg)
自AndroidAnnotation1.0起,让我们从今天开始摆脱AsyncTask吧
## (二).@Background
使用@Background注解的方法可以运行在子线程中而非UI线程。使用实例如下:
~~~
void myMethod() {
someBackgroundWork("hello", 42);
}
@Background
voidsomeBackgroundWork(String aParam, long anotherParam) {
[...]
}
~~~
该方法可以在单独的线程上面运行,但不意味着开启一个新线程。因为这边注解的内部使用一个共享的线程池,这样可以避免创建更多的线程。这意味着两个都使用@Background注解的方法可以并行的运行。
## (三).@Id
自AndroidAnnotations3.0
如果你想要取消一个后台任务,你可以使用id字段,每一个任务都可以通过BackgroundExecutor.cancelAll("id")
~~~
void myMethod() {
someCancellableBackground("hello", 42);
[...]
boolean mayInterruptIfRunning = true;
BackgroundExecutor.cancelAll("cancellable_task",mayInterruptIfRunning);
}
@Background(id="cancellable_task")
voidsomeCancellableBackground(String aParam, long anotherParam) {
[...]
}
~~~
## (四).@Serial
自AndroidAnnotations3.0起,默认情况下,使用@Background注解的方法是并行运行的。如果你想要这些任务方法按照顺序执行,你可以使用@Serial注解字段,所有后台的任务将会按照顺序执行。使用实例如下:
~~~
void myMethod() {
for (int i = 0; i < 10; i++)
someSequentialBackgroundMethod(i);
}
@Background(serial ="test")
voidsomeSequentialBackgroundMethod(int i) {
SystemClock.sleep(newRandom().nextInt(2000)+1000);
Log.d("AA", "value : "+ i);
}
~~~
## (五).@Delay
自AndroidAnnotations3.0起,如果想要让后台方法延迟运行,你可以使用@Delay参数
~~~
@Background(delay=2000)
voiddoInBackgroundAfterTwoSeconds() {
}
~~~
## (六).@UiThread
使用@UiThread注解的方法可以在UIThread进行运行,使用实例如下:
~~~
void myMethod() {
doInUiThread("hello", 42);
}
@UiThread
voiddoInUiThread(String aParam, long anotherParam) {
[...]
}
~~~
就不在使用AsyncTask
## (七).@SupposeBackground
自AndroidAnnotations3.1起,使用实例:
~~~
@EBean
public class MyBean{
@SupposeBackground
voidsomeMethodThatShouldNotBeCalledFromUiThread() {
//if this method will be called from theUI-thread an exception will be thrown
}
@SupposeBackground(serial ={"serial1", "serial2"})
voidsomeMethodThatShouldBeCalledFromSerial1OrSerial2() {
//if this method will be called from anotherthread then a background thread with a
//serial "serial1" or"serial2", an exception will be thrown
}
}
~~~
## (八).@SupposeUiThread
确保方法在UiThread中运行,使用实例:
~~~
@EBean
public class MyBean{
@SupposeUiThread
voidsomeMethodThatShouldBeCalledOnlyFromUiThread() {
//if this method will be called from abackground thread an exception will be thrown
}
}
~~~
到此位置关于AndroidAnnotations注解线程处理(Threading)使用方法已经全部讲解完成了。
FastDev4Android项目已经添加配置了AndroidAnnotations框架,后期的框架项目中也会主要使用这个DI框架,.欢迎大家去Github站点进行clone或者下载浏览.
[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)
同时欢迎大家star和fork整个开源快速开发框架项目~如果有什么意见和反馈,欢迎留言,必定第一时间回复。也欢迎有同样兴趣的童鞋加入到该项目中来,一起维护该项目。
- 前言
- Android快速开发框架介绍(一)
- Android首页图片自动无限循环轮播Gallery+FlowIndicator(二)
- Android 列表下拉刷新组件PullToRefreshListView使用(三)
- Android 数据缓存器ACache的详解和使用(四)
- Android崩溃异常捕捉CustomCrash,提升用户体验(五)
- Android实现沉浸式状态栏(六)
- AndroidAnnnotations注入框架介绍和Android Studios基本配置(七)
- AndroidAnnnotations注入框架的工作原理(八)
- AndroidAnnnotations注入框架使用之注入组件Components(九)
- AndroidAnnnotations注入框架使用之Injection标签详解(十)
- AndroidAnnnotations注入框架使用之事件绑定Event Binding(十一)
- AndroidAnnnotations注入框架使用之线程处理Threading(十二)
- AndroidAnnnotations注入框架使用之第三方框架集成RoboGuice(十三)
- AndroidAnnnotations注入框架使用之第三方框架集成Otto事件总线(十四)
- AndroidAnnnotations注入框架使用之第三方框架集成OrmLite(十五)
- AndroidAnnnotations注入框架使用之最佳实践之Adapters和lists(十六)
- AndroidAnnnotations注入框架使用之最佳实践SharedPreferences(十七)
- Android MVP开发模式详解(十九)
- 消息总线EventBus的基本使用(二十)
- 消息总线EventBus源码分析以及与Otto框架对比(二十一)
- 列表头生成带文本或者字母的图片开源库TextDrawable使用和详解(二十二)
- 重写WebView网页加载以及JavaScript注入详解(二十三)
- BaseAdapterHelper的基本使用介绍,让你摆脱狂写一堆Adapter烦恼(二十四)
- BaseAdapterHelper详解源码分析,让你摆脱狂写一堆Adapter烦恼(二十五)
- Volley完全解析之基础使用(二十六)
- Volley完全解析之进阶最佳实践与二次封装(二十七)
- RecyclerView完全解析,让你从此爱上它(二十八)
- RecyclerView完全解析之打造新版类Gallery效果(二十九)
- RecyclerView完全解析之结合AA(Android Annotations)注入框架实例(三十)
- RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
- CardView完全解析与RecyclerView结合使用(三十二)
- 神器ViewDragHelper完全解析,妈妈再也不担心我自定义ViewGroup滑动View操作啦~(三十三)
- 神器ViewDragHelper完全解析之详解实现QQ5.X侧滑酷炫效果(三十四)
- 实例解析之SwipeRefreshLayout+RecyclerView+CardView(三十五)
- HorizontalScrollView,Fragment,FragmentStatePagerAdapter打造网易新闻Tab及滑动页面效果(三十六)
- Android Design支持库TabLayout打造仿网易新闻Tab标签效果(三十七)
- 打造QQ6.X最新版本侧滑界面效果(三十八)