如果用户离开屏幕,则不执行RxJava2操作

Mic*_*eap 7 rx-java2

我通过RxJava2执行删除操作,导致我的本地缓存刷新,如下所示:

override fun removeExperience(experienceId: String, placeId: String): Completable {
    return from(placesApi.deleteExperience(experienceId, placeId))
        .andThen(from(refreshPlace(placeId))
            .flatMapCompletable { Completable.complete() }
        )
    }
Run Code Online (Sandbox Code Playgroud)

因此,只要完成删除操作(Completable完成),就会触发刷新.问题是,有时这种删除操作需要足够长的时间,为用户刚刚离开屏幕,然后将andThen永远不会执行动作的原因是没有用户了,从而在屏幕上的信息是不是最新的了.

有没有办法强制执行此操作?

Vad*_*dim 0

当用户再次打开同一屏幕时,此逻辑是否继续工作?如果是这样,那么您只需要完成from(placesApi.deleteExperience(experienceId, placeId))生命周期事件的订阅即可。最简单的方法是将整个订阅添加removeExperience()到 Disposable 或 CompositeDisposable,然后触发其.dispose().clear()on view stop 或 destroy 事件。

  • .dispose()- 不允许使用存储的相同订阅。
  • .clear()- 允许重新订阅而无需创建新的订阅实例