导航到另一个片段时触发 API 调用
Posted
技术标签:
【中文标题】导航到另一个片段时触发 API 调用【英文标题】:Fire an API call while navigating to another fragment 【发布时间】:2021-09-08 00:08:25 【问题描述】:我必须在导航到另一个片段的同时触发一个 API 请求。我当然得到java.lang.InterruptedException
,因为屏幕正在关闭并且呼叫已被释放。
我使用 MVVM、Retrofit2、RxJava、Dagger 2。
我愿意接受任何解决方案。我不是专门寻找代码 sn-ps,如果您能与我分享您的见解和解决此问题的首选方法,我会很高兴。
我的网络模型如下:
interface Api
companion object
@PUT()
@Headers()
fun setSomething(@Body something: Something): Completable
class Interactor(private val api: Api)
fun setSomething(something: Something): Completable
return api.setSomething(something)
.subscribeOn(Schedulers.io())
.observeOn(androidSchedulers.mainThread())
private fun setSomething(something: Something)
interactor.setSomething(something)
.subscribe(
, error ->
Timber.e(error)
).dispose()
【问题讨论】:
【参考方案1】:您可以尝试WorkManager,或者如果它是一次性的,您也可以使用 IntentService。
【讨论】:
【参考方案2】:如果您的呼叫在导航到不同的 Fragment 时被触发,则它可能不属于 Fragment 的 VM。根据经验,我认为调用更适合于活动范围内的 VM,而不是 VM。
【讨论】:
以上是关于导航到另一个片段时触发 API 调用的主要内容,如果未能解决你的问题,请参考以下文章