Dagger2學習筆記之Lazy和Provider
阿新 • • 發佈:2019-02-19
繼續Dagger2學習筆記之dependence的demo,將activity更改下
public class Main3Activity extends AppCompatActivity { @PresentForContext @Inject Lazy<Present> lazy; @PresentForName @Inject Provider<Present> provider; @Override protected void onCreate(Bundle savedInstanceState) { super其中Lazy(懶載入)的作用好比component初始化了一個present物件,然後放到一個池子裡,需要的時候就get它,所以你每次get的時候拿到的物件都是同一個;並且當你第一次去get時,它才會去初始化這個例項..onCreate(savedInstanceState); setContentView(R.layout.activity_main3); AppComponent appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build(); ActivityComponent activityComponent = DaggerActivityComponent.builder() .appComponent(appComponent) .activityModule(newActivityModule()) .build(); activityComponent.injectActivity(this); Present present = lazy.get(); Present present1 = provider.get(); } }
procider(強制載入)的作用:
1:同上當你第一次去get時,它才會去初始化這個例項
2:後面當你去get這個例項時,是否為同一個,取決於他Module裡實現的方式