gpt4 book ai didi

android - 不同 Activity 的 Dagger 注入(inject)

转载 作者:行者123 更新时间:2023-11-29 19:53:55 24 4
gpt4 key购买 nike

所以我正在学习 Dagger 2,但有一件事我不太了解。所以我知道在组件中你需要指定可用于注入(inject)的 Activity :

Singleton
@Component(modules={AppModule.class, NetModule.class})
public interface NetComponent {
void inject(MainActivity activity);
}

首先为什么我需要指定这个? (我从不使用变量 Activity )。

但主要问题是假设我有 10 个不同的 Activity 或 fragment ,我需要在这里列出它们吗?这是正确的做法吗,或者我们可以注入(inject)到应用程序中吗?如果我想在整个应用程序中使用 NetComponent,正确的做法是什么。

谢谢

最佳答案

如果您的每项 Activity 都有一个供应组件,那么是的。你必须为每一个都编写 inject() 方法。

另请注意,您不能对基类使用注入(inject),因为它会产生此错误:https://github.com/google/dagger/issues/214

好:

@Singleton
@Component(modules={AppModule.class, NetModule.class})
public interface NetComponent {
void inject(MainActivity activity);
void inject(SplashActivity activity);
void inject(AnotherActivity activity);
}

差:

@Singleton
@Component(modules={AppModule.class, NetModule.class})
public interface NetComponent {
void inject(BaseActivity activity);
}

此外,如果您不想注入(inject),而只想获得您的 API 服务等,您不能注入(inject),但可以使用:

@Singleton
@Component(modules={AppModule.class, NetModule.class})
public interface NetComponent {
SomeNetworkOrApiClass getNetworking();
}

当您需要时,只需从您的组件获取您的网络。

尝试阅读这篇有用的文章:

https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2

https://github.com/konmik/konmik.github.io/wiki/Snorkeling-with-Dagger-2

关于android - 不同 Activity 的 Dagger 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846093/

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