gpt4 book ai didi

android - 依赖图构建是在 Dagger 2 的编译时还是运行时发生的

转载 作者:行者123 更新时间:2023-11-30 04:59:05 24 4
gpt4 key购买 nike

关于 Dagger 2,我有一个愚蠢的问题要问。因为我想确定。我知道在编译时,Dagger 会生成代码。但是对于下面的代码:

class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
//build main component along with core component
mainComponent = DaggerMainComponent
.builder()
.myModule(MyModule())
.coreComponent(DaggerCoreComponent.builder().build())
.build()
}
}

Dagger 是在编译时调用 build() 构建组件绘制依赖图还是运行时?我的理解是它在运行时,对吗?

如果我在上面是正确的,那么下面的代码呢?:

@Module(subcomponents = MySubComponent.class)
abstract class MyModule {
...
}

我的理解是这个 Dagger 会自动检测是否请求了 MySubComponent,如果没有,它不会生成托管在 MySubComponent 中的依赖项。但是这个过程发生在运行时还是编译时?

最佳答案

依赖图是在编译时通过注释处理构建的。 Dagger 将根据您添加到类中的注释,例如 @Module@Component@Inject

我建议你阅读一篇关于注解处理的文章,像这样one :

So what is Annotation Processing? Annotation is sort of tag mechanism you can label some meta on Classes, Methods or Parameters and Annotation Processing will analyze those Annotations in compile time and generate Classes for you according to your Annotations.

build()是运行时调用的,可以打开DaggerMainComponent的代码查看build方法的实现,会创建一些依赖模块的实例,检查其他需求并最终创建 DaggerMainComponent 的新实例。

关于android - 依赖图构建是在 Dagger 2 的编译时还是运行时发生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58549169/

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