【问题标题】:Android Hilt - How to share dependency between fragments?Android Hilt - 如何在片段之间共享依赖关系?
【发布时间】:2021-12-14 15:12:49
【问题描述】:

如何使用 Hilt/Dagger 在几个指定的片段之间共享依赖关系,而不是所有片段?

我有单活动应用程序。并有 3 个片段与创建一个实体。 例如创建用户:

... go to create user ...
1st fragment: enter phone -> put phone in interactor
2nd fragment: pick avatar -> put avatar in interactor
3rd fragment: enter name  -> put name in interactor + run
... success ...

我想从第一个片段开始将数据放入交互器,并完成将数据放入第三个片段并运行交互器。而且我希望当所有这 3 个片段都被销毁时,interactor 也会被销毁。

如果我将 Dagger 中的交互器标记为 @Singleton 或 @ActivityScoped - 重用会有问题。交互器中的数据将保留以前的启动。 如果我将其设为无范围或 @FragmentScoped - 片段将有 3 个不同的交互器。

【问题讨论】:

    标签: android dagger dagger-hilt


    【解决方案1】:

    作为一种解决方案,您可以将这 3 个片段放入一个带有自己的导航和 DI 图的流片段中。 Flow DI 容器将在子片段之间共享交互器,如果您确定它的范围(如@FlowScope)。当用户完成注册后,应用导航图中会弹出 Flow Fragment,Interactor 会连同 Flow Fragment 及其子 Fragment 一起销毁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      相关资源
      最近更新 更多