- 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.
推薦閱讀
- AngularJS Testing Cookbook
- 密碼學原理與Java實現
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- JavaScript:Functional Programming for JavaScript Developers
- SQL學習指南(第3版)
- Python數據分析(第2版)
- Flash CS6中文版應用教程(第三版)
- ASP.NET 3.5程序設計與項目實踐
- Mastering Google App Engine
- Learning Salesforce Einstein
- Visual C#通用范例開發金典
- Android開發:從0到1 (清華開發者書庫)
- Learning OpenStack Networking(Neutron)(Second Edition)
- Learning Unreal Engine Android Game Development
- C++20高級編程