如何有选择地在Dagger中注入字段?

时间:2018-09-19 12:15:22

标签: android kotlin dagger-2

我有一些与活动相关的内容(活动Context,FragmentManager等),在许多不同的地方都需要,并且在请求内容时活动已经被破坏。

class SomeBackgroundWorker {
    @Inject lateinit var context: Context // Activity context! 
    fun doStuff() {
        stuff.getDoing()
        context?.let{
            StuffDoneDialog(context).show()
        }
    }
}

我想到的可能解决方案:

  • 作用域注入:从Activity中创建一个组件,然后在onDestroy()中将其删除。但是我不确定如何将.inject(this)调用为可为空的组件,以及如果component为null会在@Inject注释的字段中发生什么
  • OptionalWrapper <>注入:不知道在创建/销毁Activity后如何更新@Provide

最佳做法是什么?

0 个答案:

没有答案