[Android] CompositeDisposable , Disposable
2021. 10. 15. 13:47ㆍ모바일/Android_Java
Disposable
Observable source = Observable.just("D", "E", "F");
Disposable disposable = source.subscribe(System.out::println);
//D
//E
//F
위 코드는 Observable이 발행하는 아이템의 갯수가 정해져있어서 발행이 끝나면 onComplete()가 호출되고 종료될 것이다.
그러나, 아이템 발행이 무한하거나 오래동안 실행될때 Observable을 종료시켜주지 않으면 메모리 누수가 발생할 수 있다.
만약, Disposable이 여러개라면 각 객체마다 dispose를 해줘야 하므로 반복적인 작업을 해야만한다.
CompositeDisposable
Observable<Long> observable = Observable.interval(0,1, TimeUnit.SECONDS);
Disposable disposable1 = observable.subscribe(System.out::println);
Disposable disposable2 = observable.subscribe(System.out::println);
Disposable disposable3 = observable.subscribe(System.out::println);
CompositeDisposable compositeDisposable = new CompositeDisposable();
compositeDisposable.addAll(disposable1,disposable2,disposable3);
new Thread(()->{
try {
compositeDisposable.dispose();
Thread.sleep(3500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
0
0
0
- 초기 initialDelay 가 0이므로 0만 출력이 되고 나저미는 dispose ()되어 출력되지 않는다.
Interval
- 일정 시간 간격으로 데이터흐름을 생성한다.
- 주어진 시간 간격으로 0부터 1씩 증가하는 Long객체를 발행합니다.
@CheckReturnValue
@SchedulerSupport(SchedulerSupport.COMPUTATION)
public static Observable<Long> interval(long initialDelay, long period, TimeUnit unit) {
return interval(initialDelay, period, unit, Schedulers.computation());
}
initialDelay
- 최초 데이터 발행 딜레이 시간
period
- 뒤쪽 데이터들의 발행 간격
unit
- initialDay 와 period숫자의 의미!!
- 1이고 SECONDS. 면 1은 1초를 뜻함
Observable<Long> observable = Observable.interval(0,1, TimeUnit.SECONDS);
Disposable disposable1 = observable.subscribe(System.out::println);
new Thread(()->{
try {
Thread.sleep(3500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
0
1
2
3
'모바일 > Android_Java' 카테고리의 다른 글
FileProvider (0) | 2021.11.02 |
---|---|
[Android] WebView shouldOverrideUrlLoading 한글 깨짐 (0) | 2021.10.18 |
[Android] ScrollView 안에 View가 Scrollview를 가득 채우지 못할때 + adjustResize로 에딧텍스트를 키보드와 함께 올릴 때 이미지 찌그러지는 문제점 (0) | 2021.09.29 |
[Android] RadioGroup, RadioButton 관계 (0) | 2021.09.28 |
[Android] layout select color change (레이아웃 선택 컬러 변경) (0) | 2021.07.23 |