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 对象会一直保持活动状态(直到服务停止和活动结束)。
这看起来很好,您不需要再次创建图形,只需获取现有实例即可。
所以我有这个 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 对象会一直保持活动状态(直到服务停止和活动结束)。 这看起来很好,您不需要再次创建图形,只需获取现有实例即可。