带Presenter的RxJava和用于配置更改的保留片段
我是RxJava的新手,并将其与MVP架构一起使用。
我发现了一些关于在使用保留片段进行配置更改时保存观察值的例子(仍然不确定这是否是最好的方法)。 我发现的例子是直接在Activity或Fragment上处理observables,而不是从Presenter处理。
所以我试验并设置了这个快速示例(仅使用Reactivex的RxJava和RxAndroid库)来测试,这似乎工作正常。 这个例子的作用是:
我想知道如果我正确地做到这一点,并且在Presenter中处理observable的订阅时是否有更高效或更优雅的方式来处理配置更改?
编辑:感谢您的反馈。 基于此,我已经达到了我认为更清洁的解决方案,并且我已更新了链接示例的更改。
随着新的变化; 不是将Observable从Presenter传递给Activity,而是将retainFragment作为configurationChange事件存储,而是将retainFragment设置为Presenter创建时的第二个“视图”。
这种方式当onResume()发生在设备旋转后时,我不需要让Activity做一个丑陋的将Observable从retainFragment传递回Presenter的管道。
Presenter可以直接与第二个“视图”进行交互,并检查保留的observable本身并在需要时重新订阅。 主要活动不再需要知道这个可观察的事物。 突然它是一个更简单的视图层。
听起来很对,很好! 一些建议:
Activity.onRetainNonConfigurationInstance()
。 我听说它在Android N中没有被弃用。如果你喜欢它,你可以继续使用保留的片段,这没有问题,但是如果你不喜欢使用片段,那么你并不需要。 cache()
。 他说replay()
让你更好地控制正在发生的事情和replay().autoconnect()
和cache()
的作用相同。 他说服了我,但请亲自看看。 看起来不错,你可以看到这个例子 - https://github.com/krpiotrek/RetainFragmentSample
这个库https://github.com/MaksTuev/ferro包含另一种存储屏幕数据和管理后台任务的方式。
你的场景看起来像这样
重新创建活动,重复使用演示者,演示者在查看以前加载的数据时显示,所有rx事件都解冻
我认为这有帮助
上一篇: RxJava with Presenter and retained fragment for configuration changes