官术网_书友最值得收藏!

  • Learning RxJava
  • Thomas Nield
  • 189字
  • 2021-07-02 22:22:55

Using CompositeDisposable

If you have several subscriptions that need to be managed and disposed of, it can be helpful to use CompositeDisposable. It implements Disposable, but it internally holds a collection of disposables, which you can add to and then dispose all at once:

    import io.reactivex.Observable;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import java.util.concurrent.TimeUnit;

public class Launcher {

private static final CompositeDisposable disposables
= new CompositeDisposable();

public static void main(String[] args) {

Observable<Long> seconds =
Observable.interval(1, TimeUnit.SECONDS);

//subscribe and capture disposables
Disposable disposable1 =
seconds.subscribe(l -> System.out.println("Observer 1: " +
l));


Disposable disposable2 =
seconds.subscribe(l -> System.out.println("Observer 2: " +
l));

//put both disposables into CompositeDisposable
disposables.addAll(disposable1, disposable2);

//sleep 5 seconds
sleep(5000);

//dispose all disposables
disposables.dispose();

//sleep 5 seconds to prove
//there are no more emissions
sleep(5000);

}

public static void sleep(int millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

CompositeDisposable is a simple but helpful utility to maintain a collection of disposables that you can add to by calling add() or addAll(). When you no longer want these subscriptions, you can call dispose() to dispose of all of them at once.

主站蜘蛛池模板: 资源县| 寿光市| 梁平县| 武乡县| 昌图县| 合作市| 玉溪市| 弋阳县| 司法| 四子王旗| 两当县| 报价| 新兴县| 延安市| 阿克| 忻州市| 远安县| 双流县| 东兴市| 利辛县| 怀安县| 池州市| 闸北区| 淳安县| 浪卡子县| 尼勒克县| 周至县| 封丘县| 高邮市| 泽库县| 余姚市| 兴和县| 新乐市| 七台河市| 阳城县| 马公市| 香河县| 阳春市| 外汇| 九龙县| 双峰县|