我一直在看Dagger 2中的自定義範圍(this和this是我試圖基於我的代碼的那些),還有一件事我仍然無法理解,我發現你可以創建一個具有自定義作用域的組件,然後提供所有提供的表單,該組件所包含的模塊將與組件中的單例(組件中的單例)相同,也可以是未定義的,每次獲得時都會返回新的實例。可以匕首2的作用域比活動壽命短嗎?
但是,我仍然沒有得到的是,如果你有一個用戶範圍,然後你有一些模塊綁定到該範圍,讓說你的網絡組件是綁在它,以便網絡調用使用當前的用戶信息,如果您在註冊用戶(或登錄用戶)活動生命週期中,它是否會更改您當前標記爲@Inject的對象引用?或者當您在activity的onCreate方法中調用.inject(this)時獲得的任何實例? 或者您應該再次調用注入來獲得再次映射的引用?
在這個問題上的任何幫助,高度讚賞:)
感謝您的回覆,是的,我認爲它必須是這樣的,這就是我目前正在做的,但是,我面臨的問題,它看起來像你不能注入到2個組件,所以我需要擁有一個存根用戶的用戶組件,然後在有真實用戶時再次注入,因爲我無法注入到我的「基本組件」,再加上「用戶組件」,它試圖從一個注入中獲取所有注入。 –
這意味着'@ singleton'只是爲了澄清沒有任何真正的目的?謝謝。 – hqt
@hqt任何範圍(包括單例)都只是一個解決依賴關係的名稱(如果範圍* a *取決於* b *,那麼* b *不能取決於* a *(循環)),無論它被稱爲singleton還是foo無關緊要,範圍本身封裝了「屬於」在一起的依賴關係,因爲它們(可能)彼此依賴並且具有相似的壽命 –