我研究了这个示例repo,以了解如何在安卓应用程序中实现Kodein。但我对示例中活动案例中的上下文问题感到困惑。
代码如下:
abstract class BaseActivity<B : ViewDataBinding, VM : ViewModel>: AppCompatActivity(), KodeinAware {
protected lateinit var binding: B
lateinit var viewModel: VM
private val _parentKodein by closestKodein()
override val kodein: Kodein by retainedKodein {
extend(_parentKodein, copy = Copy.All)
bind<Activity>() with singleton { this@BaseActivity }
bind<Context>("ActivityContext") with singleton { this@BaseActivity }
import(activityModule)
}
}在这里我们可以看到,我们将活动的上下文添加到单例中。
但是我也看到我们通过retainedKodein函数得到了Kodein。因此,这个Kodein模块对旋转时的活动破坏具有免疫力。但是我不理解activity的上下文,因为singleton持有上下文。
所以我问。Kodein是否重新附加了活动的上下文?你能给我描述一下重新附着的机制吗?因为我现在还不清楚。谢谢你们!:))
https://stackoverflow.com/questions/59338521
复制相似问题