我的UI可以触发多个网络连接,并且我想提供一个状态指示器,无论连接是Loading
,Completed
还是Error
。
每个网络连接的Observable
为NetworkStatus
。由于可能同时运行许多网络连接,所以我只想全部merge
,以便UI可以获取NetworkStatus
的一个来源。
这个来源应该是这样的:
如果所有网络连接均完整无误,则源代码发出Complete
。
一旦有新的网络连接运行,源将发出Loading
状态。
如果有多个网络连接正在运行,并且一些连接已完成并且一些正在加载,则应发出Loading
状态。仅在所有网络连接完成后,Loading
状态才会更改。
Error
事件应在发生后立即发送,并且仅在成功重试失败的网络连接后才被覆盖。
如果所有NetworkStatus
Observables
完成,则在开始新的网络连接时,单个源仍可以发出新状态。
由于网络状态指示器是一个常见问题,我相信必须有一些RxJava操作员为此做好准备。但是我对RxJava并不熟悉,因此不知道可以使用哪些运算符来提供这种功能。也许我对RxJava的要求过高,这将需要实现特定的代码?