최데브는 오늘도 프로그래밍을 한다.

RxJava - Observable과 Observer 의 차이 본문

Android/RxJava, RxKotlin

RxJava - Observable과 Observer 의 차이

최데브 2021. 6. 12. 22:03

둘다 자주 나오지만 이름도 비슷한게 정확한 차이점에 대해 궁금해졌다.

그래서 여기저기 찾아다니며 알아봤는데 차이점은 아래와 같다.

 

Observable은 int, String 등등 여러 형태의 데이터를 관찰할 수 있는 즉 Observer 가 사용할 수 있는 형태로 바꾸는 역할을 한다. 

 

Observer 는 Observable 로 만들어진 데이터를 전달받고 그 데이터로 특정 행동을 취하는 역할을 한다. 

 

아래 그림을 보면 더 이해하기 편하다.

https://github.com/amitshekhariitbhu/Fast-Android-Networking/wiki/Using-Fast-Android-Networking-Library-With-RxJava

 

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 연산자로 데이터를 전달했구나!

라고 알 수 있다.

 

반응형
Comments