Android 匕首柄:父/子片段的作用域依赖项

Android 匕首柄:父/子片段的作用域依赖项,android,android-fragments,dagger-2,dagger,dagger-hilt,Android,Android Fragments,Dagger 2,Dagger,Dagger Hilt,我试图找到一个解决方案,在特定的片段相关场景中如何定义Hilt。我有以下设置: 活动 父片段1 子片段1 子片段2 子片段n-1 父片段2 子片段1 子片段2 子片段n-1 父片段1正在使用依赖项A。我只想在父片段及其所有子片段之间共享该依赖项的实例。父片段2及其子片段应使用与父片段1+子片段不同的实例。通常,他的结构应该只有两个给定依赖项的实例,一个用于第一个流,一个用于第二个流 我可以看到自定义范围可能在这里工作,但我不确定如何在刀柄上使用它。您可以使用匕首刀柄,通

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

  • 活动
    • 父片段1
      • 子片段1
      • 子片段2
      • 子片段n-1
    • 父片段2
      • 子片段1
      • 子片段2
      • 子片段n-1
父片段1正在使用依赖项A。我只想在父片段及其所有子片段之间共享该依赖项的实例。父片段2及其子片段应使用与父片段1+子片段不同的实例。通常,他的结构应该只有两个给定依赖项的实例,一个用于第一个流,一个用于第二个流


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

您可以使用匕首刀柄,通过在每个父片段及其子视图中添加
@AndroidEntryPoint
。根据匕首柄解释,您的
父片段1
父片段2
将具有不同的片段范围和不同的实例。 见以下匕首柄注释:

一个常见的误解是所有片段实例都将共享 与@FragmentScope作用域相同的绑定实例。但是, 事实并非如此。每个片段实例都会获得 片段组件,因此是其所有作用域的新实例 绑定

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

更多的细节在他们的网站上


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

好的,谢谢。但那只是关于父片段,对吗?我希望子片段与相关父片段共享相同的依赖实例。正如您所指出的,@FragmentScoped为每个片段创建一个新的依赖实例-这不是我想要的。我只希望在两个不同的“流”(父1+子流和父2+子流)之间有不同的依赖关系实例。您需要直接从父片段获取依赖关系。如果我只有几个依赖关系,这可能会起作用,但如果有很多依赖关系,则会变得“复杂”。通常,这是我的问题,即如何在不使用@Singleton的情况下归档片段之间的共享依赖关系。