ir2*_*pid 2 android dependency-injection dagger koin
我有一个 Util 模块,如下所示,它需要活动上下文 [不是应用程序上下文] 来完成它的一些功能。
如何将活动上下文注入其中?
class MainPresenter internal constructor(private val iMainActivity: IActivity) : IPresenter {
//dependencies
private val context = iMainActivity as AppCompatActivity
private var util = UtilModule(context) //<-- inject this
private var httpClient = HttpClient(context) //<-- inject this
Run Code Online (Sandbox Code Playgroud)
在这种情况下,正如@commonsware所说,presenter 类依赖于活动并不好。使用注入更好的解决方案可以是如下结构:
class IActivity{
private val utilModule: UtilModule by lazy { UtilModule(this@IActivity) }
private val httpClient: HttpClient by lazy { HttpClient(this@IActivity) }
private val presenter: MainPresenter by inject{ parametersOf(utilModel,
httpClient) }
}
class MainPresenter(private val util: UtilModule, private val httpClient: HttpClient)
Run Code Online (Sandbox Code Playgroud)
您的模块:
single { MainPresenter( it[0], it[1] ) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4113 次 |
| 最近记录: |