## (一).前言:
前面我們已經對于AndroidAnnotations框架的事件綁定做了講解,今天我們開始具體學習一下線程處理(Threading)方法。
FastDev4Android框架項目地址:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)?
已更新如下:

自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最新版本側滑界面效果(三十八)