我意識到30491785只討論了這一點,但也就是爲什麼產生差錯的沒有真正的解釋,涉及外來代碼的例子。我想用一個5行的例子來問這個問題。'有人能理解java.lang.IllegalStateException:只有一個允許觀察員在這短短的例子嗎?
問題是什麼正在發生的事情是不會與swindows(比其他事實的類型是不同的),並沒有任何變通gwindows?
public class OneObservableError {
public static void main(String[] args) throws Exception {
Observable<Long> source = Observable.interval(1, TimeUnit.SECONDS);
Observable<Observable<Long>> swindows = source.window(source, s -> Observable.interval(3, TimeUnit.SECONDS));
Observable<GroupedObservable<Long, Long>> groups = source.groupBy(x -> x % 4);
Observable<Observable<Observable<Long>>> gwindows
= groups.map(g -> g.window(g, i -> Observable.interval(3, TimeUnit.SECONDS)));
//swindows.flatMap(gw->gw).subscribe(System.out::println); //Works
gwindows.flatMap(gw -> gw).subscribe(System.out::println); //Fails with Only one Observable allowed
sleep(10000);
}
http://stackoverflow.com/questions/30491785/rxjava-java-lang-illegalstateexception-only-one-subscriber-allowed – akarnokd