- 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.
推薦閱讀
- Clojure for Domain:specific Languages
- Python金融數據分析
- C++程序設計基礎教程
- Learning AndEngine
- Unity 5.x By Example
- Android 應用案例開發大全(第3版)
- SharePoint Development with the SharePoint Framework
- Mastering Ext JS
- Visual C#.NET程序設計
- 劍指MySQL:架構、調優與運維
- Kotlin編程實戰:創建優雅、富于表現力和高性能的JVM與Android應用程序
- 零基礎Java學習筆記
- Unity&VR游戲美術設計實戰
- Visual Basic程序設計(第三版)
- DevOps 精要:業務視角