1. 程式人生 > >Dagger2學習筆記之Lazy和Provider

Dagger2學習筆記之Lazy和Provider

繼續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
.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); AppComponent appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build(); ActivityComponent activityComponent = DaggerActivityComponent.builder() .appComponent(appComponent) .activityModule(new
ActivityModule()) .build(); activityComponent.injectActivity(this); Present present = lazy.get(); Present present1 = provider.get(); } }
其中Lazy(懶載入)的作用好比component初始化了一個present物件,然後放到一個池子裡,需要的時候就get它,所以你每次get的時候拿到的物件都是同一個;並且當你第一次去get時,它才會去初始化這個例項.

procider(強制載入)的作用:

1:同上當你第一次去get時,它才會去初始化這個例項

2:後面當你去get這個例項時,是否為同一個,取決於他Module裡實現的方式