我通过RxJava2进行了删除操作,导致对本地缓存的刷新如下:
override fun removeExperience(experienceId: String, placeId: String): Completable {
return from(placesApi.deleteExperience(experienceId, placeId))
.andThen(from(refreshPlace(placeId))
.flatMapCompletable { Completable.complete() }
)
}
因此,只要完成删除操作(Completable
),就会触发刷新。问题是,有时此删除操作需要足够长的时间以使用户仅离开屏幕,然后再也不会执行andThen
操作,因为不再有订阅者,因此屏幕上的信息不是最新的不再。
是否可以执行此操作?
答案 0 :(得分:0)
当用户再次打开同一屏幕时,此逻辑是否继续起作用?如果是这样,那么您只需要完成生命周期事件的订阅from(placesApi.deleteExperience(experienceId, placeId))
。最简单的方法是将整个订阅removeExperience()
添加到Disposable或CompositeDisposable,然后在视图停止或销毁事件上触发其.dispose()
或.clear()
。
.dispose()
-不允许使用存储的相同订阅。.clear()
-允许重新订阅而无需创建新的
订阅实例