3

我有几个要注入的课程。例如,我有一个APIContentLoader类,用于从端点下载 JSON,然后将其存储到数据库中。我想将我为读取/写入数据库而制作的DatabaseManager类注入APIContentLoader。为了将DatabaseManager注入此类,我首先需要引用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类扩展了标准的 Application 类。以这种方式注入对此类的BaseApplication引用是不好的做法吗?我知道对 ApplicationContext 进行静态引用并不是使其可用于这些非活动类的好方法。

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

4

1 回答 1

6

这就是我对您的课程实际上是什么的问题所要解决的问题:

Android 组件(活动、服务等)受益于依赖注入,因为它们需要无参数构造函数,因此框架可以创建它们的实例。一个没有被 Android 框架实例化的类应该简单地接收它的依赖作为构造函数参数。没有理由@Inject在这样的类中有字段。

于 2016-10-04T05:59:26.967 回答