我还是搞清楚RxJava,并用它做与改造2.一些网络的东西一直试图就我们对AA几天,喜欢的代码看起来更具可读性,但现在所遇到的一个我似乎无法解决的问题。RxJava重新订阅事件活动后恢复
我试图执行登录(它返回一个API令牌),然后使用该令牌都在同一个链中获取一些初始数据使得链条的输出为所述令牌+数据。要做到这一点,我打电话给我的API服务与
apiClient
.login()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(token -> getData(token))
.subscribe(new Subscrber<Bundle>() {...});
这似乎很好,但我也想在启动和停止时链条,以显示进度条。所以我为此添加了.doOnSubscribe()
和.doOnUnsubscribe()
。不过,我注意到在方向更改后,我试图隐藏进度栏的片段始终为空。
因此,我搜索并遇到了RxLifecycle库,似乎它会帮助和我现在.cache()
和取消订阅事件链。但是我不知道如何在onCreate()
之后再次订阅相同的活动?我想我错过了一些非常基本的东西,并希望得到任何帮助。
你能做的最好的事情我分开你的逻辑和实现'MVP'模式。在此之后,'Presenter'类(理想情况下应该是每个视图实例的单例)将处理所有联网并在屏幕旋转后保持视图重建。实际上,有一个很漂亮的库允许使用基于rxJava的'MVP'模式https://github.com/konmik/nucleus(它非常小)。即使你不想使用它,你可以得到一个想法,它是如何实现的 – Than
嗯..好了,所以我想我需要才去下来RxJava航线上良好的MVP执行读了,以及... –
'MVP'可以使代码更cleanier,将解决这个问题,但也许它不是你要找的(这不是那么容易整个应用程序架构切换到MVP)解决方案(这就是为什么我没有张贴它作为回答)。我相信你有一种方法可以在不使用MVP的情况下使用任何第三方库或一些很好的模式,但我没有任何干净的解决方案。把我上面的评论当作“别人如何处理类似问题”。 – Than