我与RxJava和RxAndroid合作。如果发生配置更改(活动轮换,语言区域设置更改等),如何恢复可观察的工作?
我不仅需要恢复observable的工作,还需要在订阅者取消订阅时保存已发布的项目,并在订阅后立即发出所有已保存的项目。
我读了很多文章,但我找不到问题的答案。
我找到了一些例子,但没有一个没有解决问题:
答案 0 :(得分:5)
您可以使用其中一个ConnectableObservables
。特别是,cache
或replay
对于这种情况会很方便。
例如,您可以在活动被销毁时在您的observable cache
上调用unsubscribe
,并在重新创建活动后再次重新订阅。
答案 1 :(得分:1)
我已经制作了一个演示应用程序(https://github.com/pmellaaho/RxApp),以便试验如何解决这些情况。基本上,我使用Activity中的单例模型来获取网络响应。这使得缓存响应,从多个UI组件访问数据,订阅待处理请求以及为自动UI测试提供模拟数据成为可能。
答案 2 :(得分:1)
您可以使用此library中的OperatorFreeze在重新创建活动时暂停Observable。您需要将此运算符的实例传递给方法Observable.lift()。使用持久性Presenter时,您不需要取消订阅Observable。