0
我可以更改存储在Application module
中的值并将其返回到新的活动或其他位置吗?我试过这个代码,我预计@Provides
批注的方法将要求每因为我叫DaggerExampleBuilder.builde().appComponent(...).build().inject()
我是否可以更新ApplicationModule并获得每次注入的更新值
这是从我的ApplicationModule代码时间:
@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()
调用一次
+1。在这种情况下,如果你想单身人士的行为,你需要重定向@Singleton绑定(可能与@Qualifier)或使用[一些其他技术来确保单身人士行为](https://google.github.io /guava/releases/19.0/api/docs/com/google/common/base/Suppliers.html#memoize(com.google.common.base.Supplier))。 –