Now in Android 的 Hilt 组件依赖图
本文用 Scabbard 为 Now in Android 生成的 Hilt 组件依赖图,直接以交互形式嵌入。图由 Hilt 在编译期生成的组件源码导出,如实反映
NiaApplication的组件层级与作用域关系。
组件层级总览
下面这张是总览树,展示了 NiA 中全部 Hilt 组件的父子关系与作用域。点击任意节点会在新标签页满屏打开该组件的完整依赖详情图。
想要更大视野?↗ 在新标签页全屏打开,可自由缩放滚动。
怎么看这张图
- 节点:每个方框是一个 Hilt 组件,上方标注其作用域注解(如
@Singleton、@ActivityRetainedScoped、@ViewModelScoped等)。 - 连线方向:箭头表示父组件 → 子组件的派生关系。
- 交互:点击任意连线会高亮它所在的完整依赖链(上游调用方 + 下游依赖);实心脉冲的那条是当前锚点。点其他连线可换锚点,点空白处清除高亮。
- 下钻:点节点跳到对应组件(如
SingletonC、ViewModelC)的详情图,查看该组件内部的具体绑定与提供者。
各组件详情图直达
SingletonC、ViewModelC 等组件的详情图较大,在上方内嵌窗口里会偏小。下面的链接会在新标签页以满屏方式打开对应大图(可自由缩放滚动):
- SingletonC(@Singleton)
- ActivityRetainedC(@ActivityRetainedScoped)
- ServiceC(@ServiceScoped)
- ActivityC(@ActivityScoped)
- ViewModelC(@ViewModelScoped)
- FragmentC(@FragmentScoped)
- ViewC(@ViewScoped)
- ViewWithFragmentC(@ViewScoped)
作用域层级速记
NiA 的组件层级从上到下依次是:
SingletonC (@Singleton)
└── ActivityRetainedC (@ActivityRetainedScoped)
├── ServiceC (@ServiceScoped)
├── ActivityC (@ActivityScoped)
└── ViewModelC (@ViewModelScoped)
├── FragmentC (@FragmentScoped)
│ └── ViewWithFragmentC (@ViewScoped)
└── ViewC (@ViewScoped)
越靠上的组件生命周期越长、可见范围越大;子组件能注入父组件提供的所有绑定,反之不行。这也是排查「为什么这个依赖在这里注入不到」时的第一张参考图。
Enjoy Reading This Article?
Here are some more articles you might like to read next: