相关疑难解决方法(0)

Dagger 2注入构造函数

我开始在我正在开发的应用程序中使用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)

java android constructor dependency-injection dagger-2

28
推荐指数
1
解决办法
8497
查看次数