insert-koin:如何将 MVP 活动视图界面注入演示器?



我是一名Android开发人员,在设计应用程序时使用MVP。我最近得到了Insert-Koin的消息,我越喜欢它。但是,在将我的应用程序转换为使用 Koin 时,我需要将我的活动视图界面传递给演示者,这是否意味着我还需要注入我的活动?我看过 MVP 示例,但不是很清楚,因为它们不直接传递活动视图界面,而是通过 RxPresenter 对象完成(不知道(。

希望澄清如何向我的演示者注入活动视图界面。

下面是示例 MVP 代码中的演示者: https://github.com/InsertKoinIO/koin/tree/master/koin-projects/examples/android-mvp/src/main/kotlin/fr/ekito/myweatherapp/view/detail

class DetailPresenter(
private val id: String,
private val weatherRepository: WeatherRepository,
private val schedulerProvider: SchedulerProvider
) : RxPresenter<DetailContract.View>(), DetailContract.Presenter {
override var view: DetailContract.View? = null
override fun getDetail() {
launch {
weatherRepository.getWeatherDetail(id).with(schedulerProvider).subscribe(
{ detail ->
view?.showDetail(detail)
}, { error -> view?.showError(error) })
}
}
}

然后活动:

class DetailActivity : AppCompatActivity(), DetailContract.View {
// Detail id passed by argument
private val detailId by argument<String>(ARG_WEATHER_ITEM_ID)
override val presenter: DetailContract.Presenter by inject { parametersOf(detailId) }

"视图"实际分配在哪里?!?

干杯!

如果你检查链接的例子,你会看到在 DetailActivity.onStart(( 中调用了presenter.subscribe(this)(第 31 行(。

它是 DetailContract.Presenter 实现的接口 BasePresenter 的一种方法(通过 RxPresenter(;它在 RxPresenter 中被覆盖,它确实将视图分配给演示器。

请注意在 DetailActivity.onStop(((第 36 行(中对presenter.unSubscribe()的基本调用,以免泄漏活动实例!

最新更新