Skip to content

Instantly share code, notes, and snippets.

@akarnokd
Created December 10, 2020 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akarnokd/cfbb6998f60cb7a7fde4bdbd6b3dfe5f to your computer and use it in GitHub Desktop.
Save akarnokd/cfbb6998f60cb7a7fde4bdbd6b3dfe5f to your computer and use it in GitHub Desktop.
import org.junit.Test;
import io.reactivex.disposables.*;
import io.reactivex.subjects.BehaviorSubject;
public class BehaviorSubjectSignals {
@Test
public void test() throws Exception {
CompositeDisposable cd = new CompositeDisposable();
BehaviorSubject<Integer> bs = BehaviorSubject.create();
startListening(cd, bs);
bs.onNext(1);
bs.onNext(2);
System.out.println("----");
startListening(cd, bs);
bs.onNext(3);
}
void startListening(CompositeDisposable cd, BehaviorSubject<Integer> bs) {
Disposable d = bs
.doOnNext(v -> System.out.println("After subject " + v))
.skip(1)
.doOnNext(v -> System.out.println("After skip " + v))
.take(1)
.doOnNext(v -> System.out.println("After take " + v))
.doOnDispose(() -> System.out.println("doOnDispose"))
.subscribe(v -> {
System.out.println("Observer " + v);
stopListening(cd);
})
;
System.out.println("Before Composite.add");
cd.add(d);
}
void stopListening(CompositeDisposable cd) {
System.out.println("Stop listening");
cd.clear();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment