Observable.defer() 创建的 Observable 上的 retry() 会触发一个新的 Observable 吗?

Does retry() on an Observable created by Observable.defer() trigger a fresh Observable?

private Observable<String> serverResponsesStream() {
    return Observable.defer(() -> Observable.combineLatest(
            ComSocketFactory.createObservable(), // generates new Observable<ComSocket> instance
            getMessageStream(),
            (comSocket, msg) -> {
                try {
                    final String serverResponse = comSocket.transfer(msg);
                    if (serverResponse == null) {
                        throw new IOException("Server response is null.");
                    }
                    return serverResponse;
                } catch (IOException e) {
                    throw OnErrorThrowable.from(e);
                }
            }));
}


// ...

    serverResponsesStream()
            .retry()
            .subscribe(// do something);

我是否理解正确,因为我使用 defer() 订阅 Observerable,使用 retry() 的结果将是我的 ComSocketFactory 生成一个新的 Observable<ComSocket>实例?

根据文档

Returns an Observable that calls an Observable factory to create an Observable for each new Observer that subscribes.

Observable.retry() 重新订阅 Observable,所以是的 - 你从 ComSocketFactory.createObservable() 获得了新的 Observable。