Dagger2 進階(五)

懶加載Lazy和強制重新加載Provider

//懶加載
@Inject
Lazy<Person> lazyStudent;

//強制重新加載
@Inject
Provider<Person> providerStudent;

使用的時候用lazyStydent.get();

Student s=lazyStydent.get();
Student s1=providerStudent.get();

lazyPerson 多次get 的是同一個對象,providerPerson多次get,每次get都會嘗試創建新的對象。
如果Student被@Scope註解,那麼providerPerson在@Scope的作用域下還是單例。

多個元素綁定並注入到Set

將單個元素注入到Set:

@Module
public class MainActivityModule {
  @PreActivity
  @Provides
  RestApiStore provideApiStore(){
    return new RestApiStore();
  }

  @A
  @IntoSet
  @Provides
  Student provideStudentA(){
    return new Student("A");
  }
}

將子Set注入到Set:

@Module()
public class MainActivityModule {
    @Provides
    @ElementsIntoSet
    public Set<Student> provideStudentSet() {
        Set<Student> set = new HashSet<>();
        set.add(new BananaBean("cc"));
        set.add(new BananaBean("dd"));
        return set;
    }
}

activity中注入

@Inject
Set<Student> stu;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章