1.编写module类,module类中定义需要提供的注入对象
@Module
public class HttpModule{
@Provides
public HttpObject providerHttp(){
return new HttpObject();
}
}
@Module
public class PresenterModule{
@Provides
MainPresenter getMain(){
return new MainPresenter();
}
}
2.编写component类,所有需要被注入的类要在这里注册,多个component需要使用在同一个注入对象时,可以使用dependencies或者subComponent。
* 多个component 上面的scope 不能相同
* 没有scope 的组件不能依赖有scope 的组件
* 使用单例时一般要自定义singleTon
@Component(modules = {HttpModule.class}, dependencies = {PresenterComponent.class})
public interface MyComponent{
//注入的位置就写在参数上
void inject(MainActivity mainActivity);
void inject(SecondActivity mainActivity);
}
@Component(modules = {PresenterModule.class})
public interface PresenterComponent{
MainPresenter providesPresenter();
}
3.使用
DaggerMyComponent.builder().httpModule(new HttpModule()).
presenterComponent(DaggerPresenterComponent.create()).build().inject(this);
4.subComponent的写法
@Subcomponent(modules = {PresenterModule.class})
public interface TestSubComponent{
//注入的位置就写在参数上
void inject(MainActivity mainActivity);
void inject(SecondActivity mainActivity);
}
@Component(modules = {HttpModule.class})
public interface MainComponent{
TestSubComponent getTestSubComponent();
}
DaggerMainComponent.create().getTestSubComponent().inject(this);