我正在开发MVP项目。
在演示者中,我有此方法,很多演示者都可以调用此方法。
private fun getAccessToken(email: String) {
view?.showProgress()
authApi.getAccessToken()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ response ->
view?.hideProgress()
if(response != null) {
localStorage.accessToken = response.accessToken
localStorage.refreshToken = response.refreshToken
localStorage.expireIn = response.expireIn
//CODE WHICH GOES HERE DIFFER IN EACH ACTIVITY
} else {
handleError(response)
}
}, {
view?.hideProgress()
handleError(it)
}).also {}
}
当前,我将复制此方法粘贴到需要它的每个活动/片段/演示者。无可否认这是臭代码。
如何将此功能提取到BaseActivity / BaseFragment类,以便函数声明始终在一个地方?
我还如何将下一个函数传递给方法,以便在函数完成后调用该下一个函数?
我正在使用Kotlin。有一些概念,例如扩展功能,可以在这里使用类似的东西。