天天看點

Dagger2 @Scope的分析與圖解

Dagger2 @Scope的分析與圖解

    • Inject-Component-Module(未注解@Scope)
    • Inject-Component-Module(注解@Scope)
在Inject-Component-Module的基礎上圖解Scope的邏輯

Inject-Component-Module(未注解@Scope)

注:Component每次從Module中取對象,都是建立一個ModuleFactory的執行個體,再通過ModuleFactory建立執行個體。

Inject-Component-Module(注解@Scope)

注:與沒有Scope注解的方式不同,Component在初始化時就建立一個ModuleFactory的執行個體,并緩存ModuleFactory第一次生産的執行個體(DoubleCheck類)。

  1. 源碼中的@Singleton,與我們平時習慣使用的“單例”并不相同,它隻是表示在其注解的Component中是“單例”
  2. 若一個Component有多個自定義Scope,則它們實際作用都是相同的;
  3. 開發過程中要關注Component執行個體的生命周期(自定義Scope注解除了讓被它注解的Provider在所處的Component中保持單例,并沒什麼卵用?)
上面的内容隻是我的個人了解,如有錯誤,請指正!