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

时间:2018-07-18 16:03:50

标签: rx-java2

我通过RxJava2进行了删除操作,导致对本地缓存的刷新如下:

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

因此,只要完成删除操作(Completable),就会触发刷新。问题是,有时此删除操作需要足够长的时间以使用户仅离开屏幕,然后再也不会执行andThen操作,因为不再有订阅者,因此屏幕上的信息不是最新的不再。

是否可以执行此操作?

1 个答案:

答案 0 :(得分:0)

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

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