如果在組件創建時無法提供對象,請不要將它添加到組件圖中!這是要求混淆圖形依賴性和不一致性。您正在考慮的更好的解決方案是@Subcomponent
方法,該方法允許您創建一個從父級繼承依賴關係的新組件,但也會添加一個新組件。下面是一個例子:
@Component
interface RegularComponent {
@AppInstanceId String appInstanceId(); // unique per app install; not related to logging in
AuthenticatedComponent newAuthenticatedComponent();
}
@Subcomponent
interface AuthenticatedComponent {
Set<Friend> friends();
@AccountId String accountId();
}
在此,在子組件可以使用appInstanceId
提供帳戶ID的@AccountId
(如果需要),因爲與它的父組件的子組件股依賴性。
如果您需要爲子組件提供狀態(包括accountId,auth令牌等),請將其作爲參數傳遞給@Module
,並將其存儲在private final
字段中。您可以閱讀關於如何提供子組件模塊in the documentation的更多信息。
你是什麼意思的重寫? – cyroxis
@cyroxis我的意思是交換,問題已更新 – AndroidEnthusiast
我只用過'懶惰'一次。它讓我在創業時陷入僵局。再也不。順便說一句,我不知道我做錯了什麼。我個人會創建一個單獨的'Holder'對象,就像在'GrinderHolder'中一樣,並且在你有它的時候設置它(否則爲'null') –
EpicPandaForce