티스토리 뷰

android

[android] RxJava - Single

tbMaster 2020. 6. 18. 17:44
반응형

RxJava의 Single 객체를 찾아보게 된 이유는 AsyncTask를 이용해서 네트워크 통신을 해야하는데 AsyncTask는 deprecated된다고 하니 대안으로 RxJava, coroutine을 사용해야 한다고 한다. 그렇기 때문에 둘다 확인을 해볼 예정이었는데, 특히 Single은 내가 구현하고자 하는 리턴 값 하나와 에러처리에 최적화

되어 있으므로, Single에 대해서 우선 공부해보려고 한다.


 

일단 Single 객체를 사용하기 위한 사전정보를 간략하게 적어봤다 (차차 RxJava를 공부하면서 업댓할 예정)

- Observable

ReactiveX에서 observer는 Observable에 의해서 subscription 한다. 그러면 observer는 Observable에 의해서 배출되는 연속적인 item들이나 item들에 의해 반응한다. 이러한 패턴은 동시성 연산을 가능하게 하는데 이유는 Observable에 의해 배출되는 object들을 기다릴 필요가 없기 때문이다. 대신에 Observable 이 미래에 특정 작업을 진행했을 때에 대한 적절한 반응을 수행할 수 있도록 하는 observer 형태를 생성해놔야 한다.

- Observable 의 Hot vs Cold

Hot : Observable 이 생성된 시점에서 Observer 유무에 상관없이 item 을 배출. Observer는 자신이 필요한 시점에서  Observable이 배출하는 item을 subscription 하기만 하면 됨.

Cold : Observer가 subscription을 원하는 시점에서 Observable 이 작업을 진행함. 


 

Single

Single :  Observable의 한 종류 

Single은 Observable과 비슷하지만, 연속적인 value들을 배출하는 것이 아닌, 단 하나의 value 또는 error notification을 배출한다.

이러한 특성으로 Observable(onNext, onError, onCompleted)로부터 3가지 method가 아닌 2가지 method(onError, onSuccess)를 이용하여 subscibe를 진행한다.

 

* onSuccess : Single은 이 method를 통해 Single이 배출하는 하나의 item을 보낸다.

* onError : Single이 item을 배출할 수 없는 경우 Exception 처리를 진행한다.

 

Single은 한번 호출 시 onSuccess, onError method 중에 하나가 한 번만 작업을 수행한다. 그렇기 때문에 Single 작업이 종료되면, subscription도 종료된다.

 

 

Composition via Single Operators

Single을 다양한 연산자를 가지고 있으며, Observable world 와 Single world 간의 상호작용이 가능하기 때문에 서로 mix해서 다양하게 사용이 가능하다.

( Operator 는 일단 필요할 것 같은 애들만 적어놓고 나머지는 문서 참고하자 )

 

- subscribeOn | Single : 특정 Scheduler에서 Single이 작업을 수행하도록 지시하는 연산자

- observeOn | Single : 특정 Scheduler에서 subscriber 메소드들이 Single을 호출할 수 있도록 지시하는 연산자

- map | Single : 초기 Single에 의해서 배출된 item을 function 에 적용하여 나온 결과값을 Single로 리턴하는 연산자

- flatMap | Single : Single에 의해 배출되어진 item을 function에 적용하여 나온 결과값을 Single로  리턴하는 연산자 (map과 비슷하지만 mapper에 의해서 각각의 입력 값이 function에 의해 처리되고 하나의 Stream 형태로 반환되어 진다.)

- doOnError | Single : onError가 호출되었을 때 특정 메소드를 또 호출하는 Single을 리턴하는 연산자

- doOnSuccess | Single : onSuccess가 호출되었을 때 특정 메소드를 또 호출하는 Single을 리턴하는 연산자

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함