Android/RxJava, RxKotlin
RxJava - Observable과 Observer 의 차이
최데브
2021. 6. 12. 22:03
둘다 자주 나오지만 이름도 비슷한게 정확한 차이점에 대해 궁금해졌다.
그래서 여기저기 찾아다니며 알아봤는데 차이점은 아래와 같다.
Observable은 int, String 등등 여러 형태의 데이터를 관찰할 수 있는 즉 Observer 가 사용할 수 있는 형태로 바꾸는 역할을 한다.
Observer 는 Observable 로 만들어진 데이터를 전달받고 그 데이터로 특정 행동을 취하는 역할을 한다.
아래 그림을 보면 더 이해하기 편하다.
Observable<String> observable = Observable
.just("test1", "test2")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
observable.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
Log.d(TAG, "onNext: " + s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete: ");
}
});
위 코드를 실행해보면
onNext : test1
onNext : test2
onComplete :
라는 결과가 나오는걸 보고 우리는
Observable 이 String 형식으로 Observer 가 사용할 수 있도록 데이터를 가공하고 just 연산자로 데이터를 전달했구나!
라고 알 수 있다.