有這樣一個復(fù)雜的場景就是在一個subscribe-unsubscribe
的序列里我們能夠從一個Observable自動取消訂閱來訂閱一個新的Observable。
RxJava的switch()
,正如定義的,將一個發(fā)射多個Observables的Observable轉(zhuǎn)換成另一個單獨的Observable,后者發(fā)射那些Observables最近發(fā)射的數(shù)據(jù)項。
給出一個發(fā)射多個Observables序列的源Observable,switch()
訂閱到源Observable然后開始發(fā)射由第一個發(fā)射的Observable發(fā)射的一樣的數(shù)據(jù)。當(dāng)源Observable發(fā)射一個新的Observable時,switch()
立即取消訂閱前一個發(fā)射數(shù)據(jù)的Observable(因此打斷了從它那里發(fā)射的數(shù)據(jù)流)然后訂閱一個新的Observable,并開始發(fā)射它的數(shù)據(jù)。
http://wiki.jikexueyuan.com/project/rxjava/images/chapter6_12.png" alt="" />