Dagger 2范围内的一个范围

时间:2015-07-15 11:22:21

标签: android scope dagger-2

所以我有这个可注射的课程:

@Singleton
public class FriendMessageListImpl {

    @Inject RiotRosterManager riotRosterManager;

    @Singleton
    @Inject
    public FriendMessageListImpl() {
    }
}

我唯一的组件是在应用程序类中注入的:

appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
@Singleton
@Component(
        modules = {
                AppModule.class
        }
)
public interface AppComponent {


    /**
     * Core
     */
    void inject(...);
}

第一次从后台服务中注入了对象,它始终在运行。

对象应该是具有应用程序范围的单例,这意味着只要服务存在,就有一个实例。我不确定是否是这种情况,但出于某种原因,单身人士似乎没有应用范围。那么我有什么方法可以强制它吗?考虑到代码应该考虑哪个范围?

根据我的理解,我只有一个在应用程序类中创建的组件,而对象本身是通过构造函数注入的,它与组件共享相同的范围。我错了吗?

1 个答案:

答案 0 :(得分:0)

根据您的描述,似乎您的后台服务在首次启动应用程序后不断运行,因此Application对象保持活动状态(直到服务停止并且活动结束)。 这似乎很好,您不需要再次创建图表,只需获取现有实例。