【发布时间】:2017-05-29 12:00:12
【问题描述】:
我正在使用 MVP 和 RxJava 开发一个 Android 应用程序。好吧,我有一个疑问:
当我创建我的演示者和交互者时,我可以将调度程序放在演示者中,如下所示:
Presenter 中的调度程序
演讲者:
override fun tryLogin(username: String, password: String) {
mLoginInteractor.login(username, password)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Subscriber<User>(){
[...]
}
登录交互器:
override fun login(username: String, password: String) =
mRetrofit.create(ApiClient::class.java).login()
或者我可以在交互器中设置调度程序,如下所示:
交互器中的调度器
演讲者:
override fun tryLogin(username: String, password: String) {
mLoginInteractor.login(username, password)
.subscribe(object : Subscriber<User>(){
[...]
}
登录交互器:
override fun login(username: String, password: String) =
mRetrofit.create(ApiClient::class.java).login()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
我看到 Google 建议在交互器中设置调度程序。您可以在此链接中看到:
https://github.com/googlesamples/android-architecture/tree/todo-mvp-rxjava/
但是很多人把代码放在Presenter里面,比如这个例子:
那么,我是在 Presenter 中还是在 Interactor 中设置调度器?
(我认为放入 Presenter 是一个更好的主意,因为 Intractor 的工作只是获取数据,但也许我错了......)
【问题讨论】:
标签: android architecture rx-java kotlin mvp