我是RxJava的新手,并将其与MVP架构一起使用。
我发现了一些关于使用保留片段在配置更改时保存observable的示例(仍然不确定这是否是最好的方法)。我发现的例子是直接在Activity或Fragment上处理observable,而不是从Presenter处理。
所以我试验并设置了这个quick example(仅使用Reactivex的RxJava和RxAndroid lib)来测试,这似乎工作正常。这个例子的作用是:
我想知道我是否正确地执行此操作,并且当在Presenter中处理可观察的订阅时,是否有更有效或更优雅的方式来处理配置更改?
编辑: 感谢您的反馈。 基于此,我已经达到了我认为更清洁的解决方案,并且我已经更新了我的链接示例。
随着新的变化;而不是将Observable从Presenter传递给Activity到retainFragment以存储一个configurationChange事件,而是将retainFragment设置为第二个" view"在创建时向演示者发送。
这样当onResume()在设备轮换之后发生时,我不需要让Activity执行将Observable从retainFragment传递回Presenter的丑陋管道。
Presenter可以与第二个"视图"进行交互。直接检查保留的observable本身并在需要时重新订阅。主要活动不再需要知道这个可观察的。突然间,这是一个更简单的视图层。
答案 0 :(得分:3)
看起来不错,你可以看到这个例子 - https://github.com/krpiotrek/RetainFragmentSample
答案 1 :(得分:2)
听起来不错,干得好!一些建议:
Activity.onRetainNonConfigurationInstance()
。我已经听说它在Android N中被取消了。如果您愿意,可以继续使用保留的片段,这没有问题,但您不必如果你不想使用碎片。cache()
。他说replay()
可让您更好地控制所发生的事情,replay().autoconnect()
与cache()
的工作方式相同。他说服了我,但要亲自看看。答案 2 :(得分:-1)
此库https://github.com/MaksTuev/ferro包含商店屏幕数据和管理后台任务的另一种方式。
你的情况将会是这样的
重新创建活动,演示者重复使用,演示者显示以前加载的数据,所有rx事件都解冻
我认为这有帮助