【问题标题】:Fire an API call while navigating to another fragment导航到另一个片段时触发 API 调用
【发布时间】: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()
}

【问题讨论】:

    标签: android mvvm retrofit2 rx-java okhttp


    【解决方案1】:

    您可以尝试WorkManager,或者如果它是一次性的,您也可以使用 IntentService。

    【讨论】:

      【解决方案2】:

      如果您的呼叫在导航到不同的 Fragment 时被触发,则它可能不属于 Fragment 的 VM。根据经验,我认为调用更适合于活动范围内的 VM,而不是 VM。

      【讨论】:

        猜你喜欢
        • 2013-05-12
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        • 2013-12-19
        • 2015-01-10
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        相关资源
        最近更新 更多