gpt4 book ai didi

java - 我可以更新 ApplicationModule 并在每次注入(inject)时获取更新的值吗

转载 作者:行者123 更新时间:2023-12-01 09:32:03 25 4
gpt4 key购买 nike

我可以更改存储在应用程序模块中的值并将其返回到新 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com