## (一):基本介紹(Overview)
AndroidAnnotations使用很簡單的方式進行工作,它會使用Java標準的APT(Annotation Processing Tool)自動添加額外的編譯步驟在來生源代碼。
那么什么是源代碼呢?對于每一個增強(注入)的Class.例如每一個使用@EActivity注入過的Activity,它都會生成一個使用該相同Activity的名稱后邊加上一個下劃線結尾的子類Activity。
例如:下面的類:
~~~
packagecom.some.company;
@EActivity
publicclassMyActivityextendsActivity {
// ...
}
~~~
會在相同的包但另外一個源代碼文件夾中生成如下的子類
~~~
package com.some.company;
public final class MyActivity_extendsMyActivity {
// ...
}
~~~
這個子類會通過覆蓋一些方法(例如:onCreate())給你的Activity來添加相應的行為方法,然后進行委托給父類進行調用。
這就是我們真正使用的類
~~~
<activity android:name=".MyListActivity_" />
~~~
## (二):打開一個被注入過的Activity
在Android中,我們平時會通過以下這種方式來打來Activity
~~~
startActivity(this, MyListActivity.class);
~~~
然而,如果我們使用AndroidAnnotations,那么真正需要被啟動的Activity就變成了MyListActivity_
~~~
startActivity(this, MyListActivity_.class);
~~~
## (三):意圖構建(Intent Builder)
3.1.AndroidAnnotations已經提供一些靜態的方法來讓我們生成打開Activity
~~~
//打開Activity
MyListActivity_.intent(context).start();
//通過Activity來獲取Intent
Intent intent = MyListActivity_.intent(context).get();
//可以設置flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();
//可以設置額外的數據
MyListActivity_.intent(context).myDateExtra(someDate).start();
~~~
3.2.可以使用等效的startActivityForResult()方法
~~~
MyListActivity_.intent(context).startForResult(REQUEST_CODE);
~~~
請注意如下:你可以使用@OnActivityResult注解來進行獲取返回值和額外的參數值數據
~~~
@OnActivityResult(REQUEST_CODE)
voidonResult(int resultCode) {
}
~~~
3.3.可以使用意圖構建器來傳遞可選的bundle參數數據
~~~
MyListActivity_.intent(context).withOptions(bundle).start();
~~~
3.4.使用意圖構建起可以進行添加Activity打開的過渡動畫
~~~
MyListActivity_.intent(context).start().withAnimation(enterAnimRes, exitAnimRes));
~~~
3.5.框架已經提供靜態放來而讓我們進行打開serice
~~~
// Starting the service
MyService_.intent(context).start();
// Building an intent from theactivity
Intent intent = MyService_.intent(context).build();
// You can provide flags
MyService_.intent(context).flags(Intent.FLAG_GRANT_READ_URI_PERMISSION).start();
~~~
## (四):打開一個被注入過的Service
在Android中我們通常會通過如下的方法來開啟一個service
~~~
startService(this, MyService.class);
~~~
然而使用AndroidAnnotations框架之后,真正被啟動的Service必須為MyService_。
~~~
startService(this, MyService_.class);
~~~
以上就是完成對AndroidAnnotations框架的工作的基本原理,深入源代碼的講解后面會進行相應更新。
FastDev4Android項目已經添加配置了AndroidAnnotations框架,同時相應的AndroidManifest.xml文件已經做了相應的修改.歡迎大家去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最新版本側滑界面效果(三十八)