我可以更改存储在应用程序模块
中的值并将其返回到新 Activity 或其他地方吗?我已经尝试过这段代码,我希望自从我调用 DaggerExampleBuilder.builde().appComponent(...).build().inject( 以来,每次都会调用
@Provides
带注释的方法)
这是我的应用程序模块中的代码:
@Module
public class ApplicationModule {
private HandsFreeApp app;
private Property currentProperty;
public ApplicationModule(HandsFreeApp app) {
this.app = app;
Log.d("myTag", "ApplicationModule: "+hashCode());
}
@Provides @Singleton Context provideAppContext() {
return app;
}
@Provides @Singleton RestClient provideRestClient(Realm realm) {
TokenDataStore tokenDataStore = new TokenDataStore(realm);
GetTokenUseCase tokenUseCase = new GetTokenUseCase(new TokenRepository(tokenDataStore));
return new RestClientRetrofit(tokenUseCase);
}
@Provides @Singleton Realm provideRealm() {
Realm.setDefaultConfiguration(new RealmConfiguration.Builder(app).build());
return Realm.getDefaultInstance();
}
@Provides @Singleton Property getCurrentProperty(Realm realm) {
if(currentProperty == null) {
BookingStore store = new BookingLocalStore(realm);
currentProperty = store.getPropertyList().toBlocking().first().get(0);
}
Log.d("myTag", "getCurrentProperty: "+currentProperty.getName());
return currentProperty;
}
public void setCurrentProperty(Property currentProperty) {
this.currentProperty = currentProperty;
Log.d("myTag", "setCurrentProperty: "+this.currentProperty.getName());
}}
但是 getCurrentProperty()
仅调用一次
最佳答案
使用 @Singleton
注释 getCurrentProperty(Realm)
意味着 Dagger 将记住该 @Provides
方法的结果并将其用于其余部分该组件的使用生命周期。请参阅http://google.github.io/dagger/users-guide.html#singletons-and-scoped-bindings .
如果您希望每次请求 Property
时都调用该方法,请删除 @Singleton
。
关于java - 我可以更新 ApplicationModule 并在每次注入(inject)时获取更新的值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327315/