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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章