- 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.
推薦閱讀
- JavaScript前端開發模塊化教程
- Python科學計算(第2版)
- Visual Basic 6.0程序設計計算機組裝與維修
- Java技術手冊(原書第7版)
- 編程珠璣(續)
- Essential Angular
- Unreal Engine 4 Shaders and Effects Cookbook
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- 從零開始學C#
- MongoDB Cookbook(Second Edition)
- Visual Basic語言程序設計基礎(第3版)
- C語言從入門到精通
- Hands-On Dependency Injection in Go
- Instant GLEW
- 嵌入式C編程實戰