[在Android中使用dagger2进行依赖注入

问题描述 投票:0回答:1

目前,我打算在Android中使用Dagger 2。我想我了解它是如何工作的,但是我对一些细节有疑问。在Android中有关Dagger 2的各种教程中,我已经看到AndroidInjector的用法。看起来不错,但我对此有一些疑问。

  1. 应用程序类onCreate正在创建一个组件,并且该组件正在注入所有活动和片段。这是在应用程序启动时发生还是在创建特定活动或片段时发生?
  2. 我不喜欢这种方法的是,当我有100个活动,每个活动有2个片段时,在ActivityModule中,我必须写100次:

    @ContributesAndroidInjector abstract fun contributeMyActivity(): MyActivity

    同样是碎片重复200次。这是很多样板代码。我是对的还是我在这里错过了什么?还有其他更好的方法吗?

  3. 当应用程序组件正在注入所有活动时,是否不需要其他组件?仅仅是在应用程序开始时创建的一个大文件吗?在某些情况下可能需要其他组件吗?

android dagger-2
1个回答
0
投票

Dagger2 Android在自定义范围和子组件方面与Standard Dagger2几乎没有什么不同Dagger2 android为您提供了一些不用担心subComponent的功能。您所说的实际上是一个子组件。和您的问题:

1.Application类onCreate正在创建一个组件,并且该组件正在注入所有活动和片段。这是在应用程序启动时发生,还是在创建特定活动或片段时发生?

答案:是的,这取决于您在该组件中还有哪些活动,多少个片段以及您的入门活动/片段是哪个活动/片段,以及哪个活动与您的应用程序级组件直接相关联是的,只要应用程序不被破坏,应用程序只会注入/初始化一次。

2。在这种方法中,我不喜欢这样的是,当我有100个活动,而每个活动将有2个片段时,在ActivityModule中,我必须写100次:

@@ ContributesAndroidInjector抽象乐趣funMyMyity():MyActivity同样,片段也要重复200次。这是很多样板代码。我是对的还是我在这里错过了什么?还有其他更好的方法吗?

答案:更好的方法是为每个活动提供subComponent,而您不必担心第199个活动将要执行的操作,因为第199个活动仅与第199个组件和第199个组件相关联连接到appComponent而不是另一个subComponent,并且一个subComponent与您的活动关联,并且一个活动针对该片段或两个片段,是的,不要忘记对每个组件进行相应的作用域设置,您不必担心appComponent和subComponent就像继承孩子可以访问父母拥有的所有东西。

3。当应用程序组件正在注入所有活动时,是否不需要其他组件?

答案:不!您有200项活动?您可以为每个活动创建200个组件,并且每个组件将连接到应用程序级别组件以访问应用程序级别依赖关系/对象图现在我要问一个简单的问题..谁创建200个活动?

Android团队建议使用dagger2,他们承认这是一个艰难的学习过程,但他们仍希望开发人员使用dagger2,他们更专注于标准dagger2而非android dagger2。这是Dagger android的缺点,它强制使用androidContributeInjector()来耦合您的活动,它不会使徒手玩弄您想要的更多组件,但是标准dagger2会这样做。。我个人使用的是dagger2-Android,切换到standard-Dagger2,现在它可以完全控制组件或子组件。

实际上是您需要的https://developer.android.com/training/dependency-injection/dagger-android

© www.soinside.com 2019 - 2024. All rights reserved.