如何使用 Dagger2 将 ApplicationContext 注入非 activity class?

How do I inject the ApplicationContext to a non-activity class using Dagger2?

我有几个 class 想要注入。例如,我有一个 APIContentLoader class 用于从端点下载 JSON 然后将其存储到数据库。我想将我为 reading/writing 制作的 DatabaseManager class 注入到数据库 APIContentLoader 中。为了将 DatabaseManager 注入此 class,我首先需要引用 ApplicationContext,对吗?

这就是我现在的设置方式:

public class APIContentLoader{
    @Inject DatabaseManager dbm;
    @Inject BaseApplication app;

    public APIContentLoader(){
        app.getAppComponent().inject(this);
        // dbm now is ready for use
    }  
    ... // rest of class stuff
}

我的 BaseApplication class 扩展了标准应用程序 class。以这种方式将 BaseApplication 引用注入此 class 是一种不好的做法吗?我知道对 ApplicationContext 进行静态引用并不是让这些非 activity classes 可用的好方法。

我想最大的问题是,这种方法是否存在与静态引用相同的问题,就像内存管理和这些助手 classes 的生命周期保持一样?

这就是我关于你的 class 实际是什么的问题:

Android 组件(活动、服务等)受益于依赖注入,因为它们需要无参数构造函数,以便框架可以创建它们的实例。未由 Android 框架实例化的 class 应该简单地接收其依赖项作为构造函数参数。没有理由在这样的 class.

中包含 @Inject 字段