Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> AndroidAnnotations使用說明書—AndroidAnnotations是如何工作的?

AndroidAnnotations使用說明書—AndroidAnnotations是如何工作的?

編輯:關於Android編程

AndroidAnnotations的工作方式很簡單,它使用標准的java注入處理工具,自動添加了一個額外的編譯步驟來生成源代碼。

源碼是什麼?每一個增強的類,比如每一個用@EActivity注入的Activity,會自動生成一個以該類類名+下劃線為類名的該Activity子類。

比如下面這個類:
package com.some.company;


@EActivity
public class MyActivity extends Activity {
  // ...
}

將會生成下面這個子類,他們在同一個包下面但處在不同的文件夾:
package com.some.company;


public final class MyActivity_ extends MyActivity {
  // ...
}

這個子類通過復寫一些方法(比如onCreate())來為你的activity增加一些行為。

上面介紹的這些就是你在AndroidManifest.xml生命Acitivty時需要為你的類名後面增加一個下劃線的原因:


啟動一個使用注入的Activity:

在Android中,我們通常會通過如下的方式來啟動一個activity:
startActivity(this, MyListActivity.class);
然而,如果使用AndroidAnnotations的話,真正被啟動的activity是MyListActivity_而不是MyListActivity:
startActivity(this, MyListActivity_.class);


Intent Builder(AndroidAnnotations 2.4及以上):
我們提供了一個靜態的幫助類來啟動編譯生成的activity:
// Starting the activity
MyListActivity_.intent(context).start();


// Building an intent from the activity
Intent intent = MyListActivity_.intent(context).get();


// You can provide flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();


// You can even provide extras defined with @Extra in the activity
MyListActivity_.intent(context).myDateExtra(someDate).start();


在AndroidAnnotations 2.7及以上的版本中你可以使用另一個啟動Activity的方法startActivityForResult()了 :
MyListActivity_.intent(context).startForResult();


啟動一個使用注解的服務:
在Android中,我們通常通過如下的方式來啟動一個服務:
startService(this, MyService.class);


然而,如果使用AndroidAnnotations的話,真正被啟動的Service是MyService_而不是MyService:
startService(this, MyService_.class);


Intent Builder(AndroidAnnotations 2.7及以上版本):
我們提供了一個靜態的幫助類來啟動生產的Service:
// Starting the service
MyService_.intent(context).start();


// Building an intent from the activity
Intent intent = MyService_.intent(context).build();


// You can provide flags
MyService_.intent(context).flags(Intent.FLAG_GRANT_READ_URI_PERMISSION).start();
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved