gpt4 book ai didi

java - 如何使用 Dagger 重新注入(inject)特定对象

转载 作者:搜寻专家 更新时间:2023-11-01 07:58:11 26 4
gpt4 key购买 nike

在我的应用程序中,我有两种模式:演示模式和真实模式。在演示模式下,我使用另一个类模拟服务器通信:

@Module(...)
public class CommunicationModule {
@Provides @Singleton CommunicationWrapper provideNetworkBusWrapper(Application app) {
boolean isDebug = ((MyApplication) app).isDebug();

CommunicationWrapper result = null;

if (isDebug) {
result = new DemoWrapper(app);
} else {
result = new NetworkWrapper(app);
}

return result;
}
}

现在,在特定的用户操作之后,我想重新初始化此依赖项。是否可以在不重建整个 ObjectGraph 的情况下做到这一点?

最佳答案

您可以重新注入(inject)该对象,以便根据您的标志更改实现。只需从您的提供方法中删除 @Singleton 注释即可。

这是一个示例代码:

public class SomeActivity extends Activity {

@Inject CommunicationWrapper mCommunicationWrapper;

@Override
protected void onCreate(Bundle savedInstanceState) {
((MyApplication) getApplication()).inject(this);
// using NetworkWrapper
...
}

public void userActionHandler(){
((MyApplication) getApplication()).setDebug(true);
((MyApplication) getApplication()).inject(this);
// using DemoWrapper
...
}

请记住,该类的所有依赖项都将被重新注入(inject)。

关于java - 如何使用 Dagger 重新注入(inject)特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759784/

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