Dagger Hilt:父/子片段的范围依赖关系

Mor*_*dag 7 android android-fragments dagger dagger-2 dagger-hilt

我正在尝试找到如何在特定片段相关场景中定义 Hilt 的解决方案。我有以下设置:

  • 活动
    • 父片段 1
      • 子片段 1
      • 子片段2
      • ...
      • 子片段 n-1
    • 父片段 2
      • 子片段 1
      • 子片段2
      • ...
      • 子片段 n-1

父片段 1 使用依赖项 A。我只想在该父片段及其所有子片段之间共享该依赖项的实例。父片段 2 + 其子片段应使用与父片段 1 + 子片段不同的实例。一般来说,他的结构应该只有任何给定依赖关系的两个实例 - 一个用于第一个流,一个用于第二个流。

我可以看到自定义范围可能在这里工作,但我不确定如何在 Hilt 中使用它。

0xA*_*iHn -4

您可以使用 dagger-hilt 添加@AndroidEntryPoint每个父 Fragment 及其子视图来完成此操作。然后,根据匕首柄的解释,您的Parent Fragment 1和将具有不同实例的不同片段范围。Parent Fragment 2请参阅下面来自匕首柄的注释:

一个常见的误解是所有片段实例将共享以 @FragmentScoped 为作用域的绑定的同一实例。然而,事实并非如此。每个片段实例都会获得片段组件的新实例,从而获得其所有作用域绑定的新实例。

另外,请参阅下面的匕首图和范围层次结构:

在此输入图像描述

更多详细信息请参阅他们的文档

另外,除非确实有必要,否则不要使用自定义范围,因为它存在性能和开销问题。