如何使用 koin 依赖库在模块中注入活动上下文

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)

Ali*_*yan 5

在这种情况下,正如@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)