gpt4 book ai didi

java - Dagger 的 2 个 Activity 的单个实例

转载 作者:搜寻专家 更新时间:2023-11-01 09:22:34 24 4
gpt4 key购买 nike

我想知道我是否做得很好。
如果我想要 MainActivitySecondActivity 中的一个实例 CoffeHelper
我做:

public class MyApplication extends Application {

public static CoffeeComponent getCoffeeComponent() {
return coffeeComponent;
}

private static CoffeeComponent coffeeComponent;

@Override
public void onCreate() {
super.onCreate();
coffeeComponent = createCoffeeComponent();
}

private CoffeeComponent createCoffeeComponent() {
return DaggerCoffeeComponent.builder().build();
}
}

--

@Singleton
@Component(modules = {CoffeeProvider.class})
public interface CoffeeComponent {

void provideCoffe(MainActivity mainActivity);
void provideCoffe(SecondActivity secondActivity);

}

现在我可以写入 MainActivity 和 SecondActivity 执行此操作:

MyApplication.getCoffeeComponent().provideCoffe(this);

这是好习惯吗?

我的模块:

@Module
public class CoffeeProvider {

@Provides
@Singleton
CoffeeHelper getCoffeeHelper(){
return new CoffeeHelper();
}

}

最佳答案

是的,CoffeeHelper 的唯一实例将提供给 MainActivitySecondActivity,假设它们有这样的声明: @Inject CoffeeHelper 助手。由于 scoping,将返回唯一实例,而 @Singleton 是一个 dagger-2 范围注释。

Is it a good practice?

这是非常值得怀疑的,主要是基于意见,但这是非常常见的模式,除非您使用专为 android 使用而设计的 dagger 模块(它提供 AndroidInjector 和其他便利)。

关于java - Dagger 的 2 个 Activity 的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528219/

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