【问题标题】:When to call Dagger 2 inject in android component lifecycle何时在 android 组件生命周期中调用 Dagger 2 注入
【发布时间】:2017-10-24 08:03:24
【问题描述】:

which methods 的android 组件生命周期中我应该call dagger 2 inject 吗?例如,我有:

  • 活动(A),
  • 活动嵌套片段(B),
  • 片段嵌套片段 (C)。

在 C 中我使用父组件(B 组件),在 B 中我也使用父组件(A 组件)。所以这些组件应该按上述顺序创建。

我目前的解决方案是:

  • 在创建时,
  • onViewCreated,
  • onViewCreated;

但这是不正确的,因为每次从返回堆栈中弹出片段时都会调用 onViewCreated。

当我在打开“不保留活动”模式的片段的 onCreate 中调用注入时,片段嵌套片段 onCreate 方法在活动嵌套片段 onCreate 之前调用,因此它也不起作用。

【问题讨论】:

  • 你应该添加一些你如何声明你的 Dagger 模块的代码。
  • 也许可以尝试添加一个标志来检查嵌套片段的组件是否已经在您当前的解决方案中初始化?
  • @MuratK。这里有必要吗?
  • @canihazurcode 这是可能的,但我认为有更好的方法来做我想做的事..
  • 我认为使用单个组件提供由活动、片段和嵌套片段共享的所有对象将是一个更好的解决方案。该组件可以独立于 A、B 或 C 生命周期进行初始化。

标签: android android-fragments android-activity dagger-2 dagger


【解决方案1】:

正确答案是在onCreate 方法中调用dagger 2 injection,但 调用super.onCreate(bundle); 之前,因为所有嵌套片段都是在该调用中创建的。在activity和activity嵌套fragment中都是必须的,对fragment嵌套fragment无所谓。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 2011-12-04
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多