我通过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永远不会执行动作的原因是没有用户了,从而在屏幕上的信息是不是最新的了.
有没有办法强制执行此操作?
当用户再次打开同一屏幕时,此逻辑是否继续工作?如果是这样,那么您只需要完成from(placesApi.deleteExperience(experienceId, placeId))生命周期事件的订阅即可。最简单的方法是将整个订阅添加removeExperience()到 Disposable 或 CompositeDisposable,然后触发其.dispose()或.clear()on view stop 或 destroy 事件。
.dispose()- 不允许使用存储的相同订阅。.clear()- 允许重新订阅而无需创建新的订阅实例| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |