RxJava在活动恢复后重新订阅事件

sou*_*rar 16 android android-lifecycle rx-java retrofit

我还在弄清楚RxJava并使用它来与Retrofit 2做一些网络工作.我们已经尝试了几天了,而且现在这些代码看起来更具可读性但却遇到了一个我似乎无法想象的问题周围.

我正在尝试执行登录(返回API令牌),然后使用此令牌获取同一链中的所有初始数据,以便链的输出是令牌+数据.要做到这一点,我用一个调用我的API服务

apiClient
    .login()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .flatMap(token -> getData(token))
    .subscribe(new Subscrber<Bundle>() {...});
Run Code Online (Sandbox Code Playgroud)

这似乎很好,但我也想在启动和停止链条时显示进度条.所以我也添加了一个.doOnSubscribe()和一个.doOnUnsubscribe().但是我注意到在更改方向后,我试图隐藏进度条的片段始终为null.

所以我搜索并发现了RxLifecycle lib,看起来它会有所帮助,我现在.cache()并取消订阅事件链.但我不知道如何onCreate()在此之后再次订阅同一事件?我想我错过了一些非常基本的东西,并希望对此有任何帮助.

Jer*_*oen 0

您需要确保订阅从返回的同一个Observable实例.cache()。通常,您会将此实例存储在单例(如应用程序类)、保留片段或 Android 服务中的某个位置。