class 中的 Dagger 2 瞄准镜

Dagger 2 scopes in a class

所以我有这个 class 是可注射的:

@Singleton
public class FriendMessageListImpl {

    @Inject RiotRosterManager riotRosterManager;

    @Singleton
    @Inject
    public FriendMessageListImpl() {
    }
}

我唯一的组件被注入到应用程序中class:

appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();

@Singleton
@Component(
        modules = {
                AppModule.class
        }
)
public interface AppComponent {


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

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

对象应该是具有应用范围的单例,即只要服务存在就一个实例。我不确定是不是这样,但出于某种原因,单例似乎没有应用范围。那么有什么办法可以强制执行吗?考虑到该代码,它应该具有哪个范围?

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

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