編輯:Android開發教程
Injector 通過檢查bindings 定義來創建某個類型的實例對象。定義在Module 中的綁定稱為“明確聲明綁定(Explicit bindings”。Injector 會首先使用帶 有Explicit Bindings為某個類型創建實例對象。 當但某個類型沒有明確定義綁 定時,Injector 試圖構造“即時綁定(Just-in-time Bindings),JIT Bindings 也成為隱含綁定(implicit bindings).
Eligible Constructor
Injector 通過使用類的injectable constructor 來創建該類的實例對象 。injectable constructor 可以為該類定義的public 不帶參數的構造函數或是 帶有@Injector 標記的構造函數。
比如Android RoboGuice 使用指南 (4):Linked Bindings中MyRectangle的無參數構造函數:
public class
MyRectangle extends Rectangle{
public MyRectangle(){
super(50,50,100,120);
}
...
}
和Android RoboGuice 使用指南(6):Instance Bindings 定義的含 @Injector 標記的構造函數:
public class MySquare extends
MyRectangle {
@Inject public MySquare(@Named("width") int width){
super(width,width);
}
}
@ImplementedBy
該標記通知Injector某個類型的缺省實現,其 功能和Linked Bindings 類似,例如:
@ImplementedBy
(PayPalCreditCardProcessor.class)
public interface CreditCardProcessor {
ChargeResult charge(String amount, CreditCard creditCard)
throws UnreachableException; }
和
bind (CreditCardProcessor.class) .to (PayPalCreditCardProcessor.class);
等效。 如果某個類型同時含有 @ImplementedBy 和bind 定義,將優先使用bind 中的定義。
注: @ImplementedBy 定義了從Interface到實現的依賴,一般不建議使用。
@ProvidedBy
@ProvidedBy 通知Injector 某個類型使用那個缺省 Provider來創建實例對象,例如:
@ProvidedBy
(DatabaseTransactionLogProvider.class)
public interface TransactionLog {
void logConnectException(UnreachableException e);
void logChargeResult(ChargeResult result);
}
和下面Binding等效:
bind(TransactionLog.class) .toProvider(DatabaseTransactionLogProvider.class);
和 @ImplementedBy 一樣,如果同時定義了@ProvidedBy和bind,模塊中定義的bind 優先
查看全套文章:http://www.bianceng.cn/OS/extra/201301/34950.htm
Android ApiDemos示例解析(47):Content->Assets->Read Asset
android.Content包定義了一些類,這些類主要用於在設備上訪問或是發布數據,主要有三個包構成。Content 共享 (android.content) 主要用於
Android測試教程(3):測試項目
Android的編譯和測試工具需要測試項目組織符合預訂的結構:分別為Test case 類,Test case 包以及測試項目。JUnit 為Android的測試的基礎,
Android和iOS誰更強:Android 4.4與iOS 7的對比
Android和iOS誰更強?看到這個問題兩大陣營的用戶們估計又要吵翻天了。但誰都不能否認的是,這兩款操作系統都具備著超強的實力,才能夠取得如今的成績。在最近,Andro
android FragmentTabhost實現選項卡
在Android3.0之後,google創造了Fragment,因此原來的Tabhost已經不推薦使用了,現在一般推薦使用FragmentTabhost。google考慮