編輯: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.Content包定義了一些類,這些類主要用於在設備上訪問或是發布數據,主要有三個包構成。Content 共享 (android.content) 主要用於
Android的編譯和測試工具需要測試項目組織符合預訂的結構:分別為Test case 類,Test case 包以及測試項目。JUnit 為Android的測試的基礎,
Android和iOS誰更強?看到這個問題兩大陣營的用戶們估計又要吵翻天了。但誰都不能否認的是,這兩款操作系統都具備著超強的實力,才能夠取得如今的成績。在最近,Andro
在Android3.0之後,google創造了Fragment,因此原來的Tabhost已經不推薦使用了,現在一般推薦使用FragmentTabhost。google考慮