我开始在我正在开发的应用程序中使用Dagger 2,但我对Dagger 2的工作方式有一些疑问.
我得到了@Provides方法和@Inject注释背后的所有逻辑来初始化你的依赖关系,但@Inject注释到类构造函数有点让我头疼.
例如:
我的应用程序,我有一个模块定义,ContextModule,以检索我的应用程序的上下文:
ContextModule.java
@Module
public class ContextModule {
private final Context context;
public ContextModule(Context context) {
this.context = context;
}
@Provides
public Context context() {
return this.context;
}
}
Run Code Online (Sandbox Code Playgroud)
我的BaseActivityComponent使用此模块:
BaseActivityComponent.java
@BaseActivityScope
@Component(modules = ContextModule.class)
public interface BaseActivityComponent {
void injectBaseActivity(BaseActivity baseActivity);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止很好..然后我有一个AuthController类,这取决于上下文,我想在我的BaseActivity中注入它.所以在我的AuthControllers.class中我有类似的东西:
public class AuthController {
private Context context;
@Inject
public AuthController(Context context) {
this.context = context;
}
public void auth() {
// DO STUFF WITH CONTEXT
}
}
Run Code Online (Sandbox Code Playgroud)
我将它注入我的BaseActivity中,如:
public class BaseActivity extends …Run Code Online (Sandbox Code Playgroud)