RxAndroid는 Retrofit을 사용해보려고 하던차에
이와 궁합이 아주 좋으면서 AsyncTask를 대체할 라이브러리가 있다고 들어서
접하게 되었는데요.
조금씩 써보니 장점이 많은것 같아서 정리해보고자 합니다.
1. 라이브러리 설정
역시나 외부 라이브러리를 불러오는 것이니, Dependency 설정부터 합니다.
참고로, Gradle파일을 직접 수정하시는 분들은
가장 하단에 compile 'io.reactivex:rxjandroid:1.2.1' 만 추가하면 됩니다.
하지만, 요즘엔 이렇게 잘 않하시지요? ;)
2. RXANDROID의 4대 요소
RxAndroid는 크게 4가지로 구성되어 있는데요.
Observable
Observer
Scheduler
SubScription
먼저 Observable은 끊임없이 흘러나오는 데이터의 스트림을 가르킵니다.
(데이터의 강물이라고도 부르네요)
Observable은 아이템들이나 그 아이템의 배열들을 방출하는데요.
바로 위의 코드에서는 BodyText라고 하는 String하나만을 방출합니다.
옵저버블은 onNext, OnComplete, onError를 통해 데이터전달 뿐 아니라 에러신호도 전달하는 역할도 하는데요. 우선 지금 단계에서는 just라고 하는 하나의 데이터만 전달하는 것에 집중해보고
차후에 3가지 전달케이스에 대해서도 알아보도록 하겠습니다.
우선은 데이터를 방출하는 것이 옵저버블이고, just(단지)를 통해 하나의 데이터만 방출했구나 하고
이해합니다.
2-2. Observer
Observable에서 흘러나온 데이터를
Observer가 Subscribe(구독)해서 반응합니다.
위의 코드에선 fetchObserver()라는 커스텀 메소드를 사용하여 반응하였습니다.
Observer라고 거창한 이름이지만, 결국엔
Observable이 보낸 데이터를 받는 간단한 일이네요.
스타크래프트의 그 옵저버를 생각해도 될까요? ㅎㅎㅎ
어쨌던 보낸 데이터를 관찰해서 받아내는 녀석이라고 생각해도 될것 같습니다.
참고로 fetchObserver()라는 것은 그저bodyText라는 스트링 데이터를 어떻게 가공해서 쓸지에 대해서 기술하는 것인데, TextView에 setText하는 정도로 처리해도 되겠네요.
2-3. Subscription
Observable이 방출한 아이템들을 Observer가 구독해서 반응을 하는데요.
바로 이때, Observer와 Observable의 연결을 Subscription이라고 합니다.
그러니까, 아이템을 보내는 것이 있고, 받는 것이 있는데, 보내는 것과 받는 것의 연결자체를
Subscription이라고 합니다.
이 Subscription이라는 것이 굉장히 중요하게 사용될 수 있는데요.
안드로이드의 각각의 생명주기에서도, 언제든지 이 Subscription을 가져와서 Unregister할 수 있습니다.
2-4. Scheduler
왠 스케쥴러냐 하실수 있겠지만,
이건 멀티쓰레드를 적용하고자 할때 사용한다고 생각하시면 됩니다.
rxJava를 사용하면 AsyncTask는 사용하는 방법마저 잊어버리게 된다는 데요,
저도 써보니 AsyncTask는 않쓰게 되는 것 같습니다.
이제 시작이니 RxAndroid에 대해서 좀더 다양하게 공부하면서 정리해보도록 하겠습니다.
'Android 개발 > Retrofit, RxJava, RxAndroid, OKHttp' 카테고리의 다른 글
RxJava2 (RxAndroid2) 로 업그레이드 하기 (1) | 2018.04.03 |
---|---|
RxJava로 구현하는 EventBus (0) | 2017.09.28 |
RetryWhen 으로 다시 시도 (Retry) 구현하기 #RxJava (0) | 2017.05.25 |
RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자. (0) | 2017.05.24 |
OKHttp 의 Application Interceptor 와 Network Interceptor (0) | 2017.05.22 |
RxJava 의 FlatMap, From 그리고 filter 로 For문 에서 벗어나보자 (0) | 2017.03.20 |
RxAndroid :: Subscription 을 Unsubscribe 해서 Memory Leak을 막자 (0) | 2017.02.22 |
RxJava (RxAndroid)의 Map 과 FlatMap 메소드를 알아보자 (0) | 2017.02.17 |
안드로이드에서 Retrofit + SimpleXmlParser 사용하기 (0) | 2016.12.26 |
Gson + Retrofit + RxAndroid이용해 JSON파싱할 때 Nested Array 처리 (0) | 2016.12.20 |
댓글