(一):基本介紹(Overview)android
AndroidAnnotations使用很簡單的方式進行工做,它會使用Java標準的APT(Annotation Processing Tool)自動添加額外的編譯步驟在原生源代碼。
對於每個加強(注入)的Class.例如每個使用@EActivity注入過的Activity,它都會生成一個使用該相同Activity 的名稱後邊加上一個下劃線結尾的子類Activity。框架
package com.some.company; |
會在相同的包但另一個源代碼文件夾中生成以下的子類動畫
package com.some.company; |
這個子類會經過覆蓋一些方法(例如:onCreate())給你的Activity來添加相應的行爲方法,而後進行委託給父類進行調用。這就是咱們的Activity的配置:this
<activity android:name=".MyListActivity_" />spa |
(二):打開一個被注入過的Activityci
在Android中,咱們平時會經過如下這種方式來打來Activity:get
startActivity(this, MyListActivity.class);it |
然而,若是咱們使用AndroidAnnotations,那麼真正須要被啓動的Activity就變成了MyListActivity_
startActivity(this, MyListActivity_.class); |
(三):意圖構建(Intent Builder)
3.1 AndroidAnnotations已經提供一些靜態的方法來讓咱們生成打開Activity
1.打開Activity
MyListActivity_.intent(context).start();
2.經過Activity來獲取Intent
Intent intent = MyListActivity_.intent(context).get();
3.能夠設置flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();
4.能夠設置額外的數據
MyListActivity_.intent(context).myDateExtra(someDate).start();
5.能夠使用等效的startActivityForResult()方法
MyListActivity_.intent(context).startForResult(REQUEST_CODE);
請注意以下:你能夠使用@OnActivityResult註解來進行獲取返回值和額外的參數值數據
@OnActivityResult(REQUEST_CODE)
void onResult(int resultCode) {
}
3.2 能夠使用意圖構建器來傳遞可選的bundle參數數據
MyListActivity_.intent(context).withOptions(bundle).start();
3.3 使用意圖構建起能夠進行添加Activity打開的過渡動畫
MyListActivity_.intent(context).start().withAnimation(enterAnimRes, exitAnimRes));
3.4 框架已經提供靜態放來而讓咱們進行打開serice
3.4.1 Starting the service
MyService_.intent(context).start();
3.4.2 Building an intent from the activity
Intent intent = MyService_.intent(context).build();
3.4.3 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);