【问题标题】:RxJava: How resume the work of an observable if a configuration change occurs?RxJava:如果发生配置更改,如何恢复 observable 的工作?
【发布时间】:2015-10-20 15:33:31
【问题描述】:

我与RxJavaRxAndroid 合作。如果发生配置更改(活动轮换、语言区域更改等),如何恢复 observable 的工作?

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

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

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

【问题讨论】:

    标签: android retrofit reactive-programming rx-java rx-android


    【解决方案1】:

    您可以使用ConnectableObservables 之一。特别是,cachereplay 在这种情况下会很方便。

    例如,您可以在您的 observable 上调用 cache,在 Activity 销毁时调用 unsubscribe,并在 Activity 重新创建后重新订阅它。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        猜你喜欢
        • 2017-04-25
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-24
        • 1970-01-01
        • 2017-10-13
        相关资源
        最近更新 更多