5

我使用RxJavaRxAndroid。如果发生配置更改(活动轮换、语言区域更改等),如何恢复可观察对象的工作?

我不仅需要恢复 observable 的工作,还需要保存已发出的项目,当订阅者取消订阅并在订阅后立即发出所有已保存的项目。

我阅读了大量文章,但我没有找到问题的答案。

我找到了几个例子,但没有一个不能解决问题:

4

3 回答 3

5

您可以使用其中一种ConnectableObservables。特别是,cache或者replay对于这种情况会很方便。

例如,您可以在活动被销毁时调用cache您的可观察对象,unsubscribe并在活动被重新创建后重新订阅它。

于 2015-07-29T23:26:20.417 回答
1

我制作了一个演示应用程序 ( https://github.com/pmellaaho/RxApp ) 以试验如何处理这些情况。基本上,我使用来自 Activity 的单例模型来获取来自网络的响应。这使得缓存响应、访问来自多个 UI 组件的数据、订阅挂起的请求以及为自动化 UI 测试提供模拟数据成为可能。

于 2015-08-28T19:09:11.380 回答
1

您可以使用此中的 OperatorFreeze 在重新创建活动时暂停 Observable。您需要将此运算符的实例传递给方法 Observable.lift()。当你使用持久的 Presenter 时,你不需要取消订阅 Observables。

于 2018-01-14T20:11:44.807 回答