Dagger 没有初始化 Lazy<T> 惰性变量?
Dagger does not initialize Lazy<T> lazy Variable?
我正在使用 Java 和 Dagger 依赖注入框架。我经常遇到必须初始化 class 但稍后使用的情况,例如:
private final Message message;
public SomePresenter() {
message = DaggerComponent.getMessage();
}
public someFuncA() {
message.doSomething();
}
public someFuncB() {
message.doSomething();
}
我希望该消息在第一次被请求时初始化,并且从那一刻起始终在此 class 中使用相同的消息实例。我该怎么做?
编辑:
我尝试按如下方式使用 Lazy,但 lazyMessage 是 undefined
:
public class StartPresenter {
@Inject
Lazy<Message> lazyMessage;
@Inject
public StartPresenter(ConfigObject config) {
}
}
这是我的 dagger2 配置:
@Component(modules = {ApplicationModule.class})
@Singleton
public interface ApplicationComponent {
Message getMessage();
}
@Module()
public class CoreModule {
@Provides @Singleton
Message provideMessage() {
return new MessageImpl();
}
}
如何让 dagger 实例化 lazyMessage?
使用 Lazy class 赞
@Inject Lazy<Message> message;
在您的代码中使用:
//Doing something with message
message.get().messageMethod();
Here's the documentation for Lazy
Dagger 只会在调用 get() 时连接 class。每次调用 get() 时都会 return 相同的实例。
我正在使用 Java 和 Dagger 依赖注入框架。我经常遇到必须初始化 class 但稍后使用的情况,例如:
private final Message message;
public SomePresenter() {
message = DaggerComponent.getMessage();
}
public someFuncA() {
message.doSomething();
}
public someFuncB() {
message.doSomething();
}
我希望该消息在第一次被请求时初始化,并且从那一刻起始终在此 class 中使用相同的消息实例。我该怎么做?
编辑:
我尝试按如下方式使用 Lazy,但 lazyMessage 是 undefined
:
public class StartPresenter {
@Inject
Lazy<Message> lazyMessage;
@Inject
public StartPresenter(ConfigObject config) {
}
}
这是我的 dagger2 配置:
@Component(modules = {ApplicationModule.class})
@Singleton
public interface ApplicationComponent {
Message getMessage();
}
@Module()
public class CoreModule {
@Provides @Singleton
Message provideMessage() {
return new MessageImpl();
}
}
如何让 dagger 实例化 lazyMessage?
使用 Lazy class 赞
@Inject Lazy<Message> message;
在您的代码中使用:
//Doing something with message
message.get().messageMethod();
Here's the documentation for Lazy
Dagger 只会在调用 get() 时连接 class。每次调用 get() 时都会 return 相同的实例。