본문 바로가기
반응형

RxJava13

RxJava first()와 single()의 차이 총정리 RxJava에서 Observable을 Single타입으로 변환할 수 있는 방법이 있는데요.바로 first()와 single()을 사용하는 것 입니다.오늘은 이 둘의 차이를 알아보고 적절하게 사용하는 방법에 대해 보겠습니다. 1. first()와 single의 차이RxJava의 Observable의 first()나 single()을 사용하면,하나의 아이템만을 구독할 수 있습니다. 이 둘을 표로 비교하면 다음과 같습니다.  first()single()사용스트림의 첫 번째 항목만 필요할 때 사용정확히 하나의 항목만 방출되는지 확인하고, 그 항목을 방출(여러개 방출시 에러)에러처리비어있으면 NoSuchElementException발생 시킴비어있거나 둘 이상의 항목을 포함하면 에러를 발생 시킴완료 시점첫 번째 항.. 2024. 11. 4.
RxJava flatMapCompletable 과 flatMap + ignoreElement 조합의 차이 이해하기 오늘은 RxJava에서 Completable을 방출해주도록 변환해주는 연산자인,flatMapCompletable과 flatMap + ignoreElement 조합의 차이에 대해서 알아보겠습니다. 1. flatMapCompletableflatMapCompletable은,Single이나 Observable의 각 항목을 Completable로 변환합니다. 여기서 말하는 Completable은,onComplete 혹은 onError 이벤트만 발생시키는,Observable 을 말합니다. Completable을 방출한다는 것은,flatMap을 통해서 작업을 한 후,반환되는 데이터가 필요하지 않다는 뜻 입니다.이런 종류의 작업으로는 데이터베이스에 저장하는 경우를 생각해 볼 수 있겠네요. Observable.just(.. 2024. 11. 2.
RxJava ignoreElements() 연산자에 대한 이해 오늘은 RxJava의 연산자 중,ignoreElements()에 대해서 알아보겠습니다. 1. ignoreElements()연산자 이름만 보면 이해하기가 쉬운데요.Observable 에서 흘러나오는,데이터를 모두 무시하는 연산자입니다. 그런데, 그냥 무시할꺼면 왜 사용할까요?흘러나오는 데이터가 필요없기 때문입니다.단순히 완료 되었는지, 또는 오류가 발생했는지만, 알고 싶을 때 사용합니다. ignroeElements()를 사용해 주면, 원래의 Observable이 Completable로 변환되는데요.Completable은,onComplete 또는 onError 이벤트만 발생시키는,특별한 유형의 Observable입니다. Observable numbers = Observable.range(1, 5);numbe.. 2024. 10. 30.
RxJava2의 Global Error Handler 대응 #UndeliverableException 오늘은 RxJava2의 Global Error Handler에 대해서 정리해 보도록 하겠습니다. 이 글은 UndeliverableException이 발생하는 케이스에 대응하는 방법이기도 한데요. 재현하기가 쉽지만은 않은 케이스입니다. 하지만, 프로덕트로 Playstore에 출시하게 되고, 다양한 기기와 상황에서에서는 언젠가는 마주치게 되는 Exceptoin이기도 합니다. 1. 문제 아래와 같이 이미 cancel되었거나 dispose되어서 consumer가 갈 곳이 없다고 나와있습니다. 무슨 Exception이길레, 해결할 방법에 대한 link까지 제공해 주고 있는 것일까요? 이것은 RxJava2로 업그레이드 하면서, 달라진 ErrorHandler를 적용하지 않아서 발생한 문제인데요. 이것이 무엇이고 왜 .. 2019. 10. 16.
RxJava2 (RxAndroid2) 로 업그레이드 하기 RxJava2(RxAndroid)가 나온지도 시간이 많이 흘렀네요.RxJava개발진영에서도 2018년 3,4월경부터는 더이상 지원을 하지 않는다고 하니,이제는 업그레이드를 위한 준비를 해서 테스트 일정까지 생각해보아야 할 때가 되었는데요. 오늘은 RxJava1에서 RxJava2(RxAndroid)로 업그레이드 하면서 알아야 하는 것에 대해서 정리해 보도록 하겠습니다.혹시 RxJava1에 관해서는 아래 링크를 참조해 주세요ㅋ>>RxAndroid 이해하기 1. dependency설정 RxAndroid2를 사용하기 위해서는 dependency부터 변경해야 겠지요.이미지에서 하이라이트된 두줄을 추가해 주어야 합니다. 참고로 retrofit을 사용하고 있다면, adapter-rxjava2로 adapter도 변경해.. 2018. 4. 3.
RxJava로 구현하는 EventBus Event를 하나의 클래스에서 받아서 중개해주는 방식의 EventBus방식은,바로 연결되어 있지 않아서 Listener를 전달하기 힘들 Activity나 Fragment, Service들 사이에 Event를 전달하기 참 좋은데요.EventBus나 지금은 Deprecated된 Square사의 Otto도 있지만, RxJava로도 구현할 수 있습니다.(Otto가 Deprecated된 이유도 RxJava때문이지요.) 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. 구현 방법 우선 간단하게 구현방법을 정리해 보겠습니다.먼저, Event의 중개자가 될 Singleton방식의 EventBus클래스를 생성하구요.이 EventBus를 이용해, EventSend와 EventGet을 할 수 있는 메소드를 만들어 줍니다. .. 2017. 9. 28.
ProGuard Rules 정리 (Retrofit & OkHttp, JSoup, GSon, RxJava, Glide etc) 다양한 라이브러리를 사용하는 만큼, 다양한 ProGuard를 사용해야 합니다.그런데, 어떤 라이브러리는 이 부분에 대해서 명확히 정리하고 있고,또 어떤 라이브러리는 그렇지 못합니다. 오늘은 제가 주로 사용하는 라이브러리들의 Proguard세팅과 링크들을 정리해 보겠습니다. 1. Retrofit & OkHttp 안드로이드 앱에서 네트워크를 사용한다면 대부분이 사용하는 라이브러리일 것 같은데요.라이브러리도 잘 만들었지만, Proguard룰도 홈페이지에 잘 정리해 두었습니다. 역시 믿고 의지하는 Square네요.아래 링크의 페이지에서, 하단부에 Proguard-Rule을 소개하고 있구요.더불어 Retrofit이 사용하는 OkIo의 Proguard-Rule의 링크도 제공해 주고 있습니다. http://squar.. 2017. 7. 8.
RetryWhen 으로 다시 시도 (Retry) 구현하기 #RxJava 네트워크를 한다던지, 서버 클라이언트 관계를 만들경우,연결이 되어있지 않거나, 원하는 정보를 아직 받지 못할 경우가 있습니다.이럴 때, RxJava의 Operator인 RetryWhen을 사용하면 한결 쉽게 이러한 처리를 할 수 있는데요. 오늘은 이 retryWhen에 대해서 정리해보도록 하겠습니다. 1. RetryWhen 오퍼레이터 RxJava의 Retry 오퍼레이터는 error가 생기면, 자동으로 다시 subscribe해주는 메소드인데요.이 retry에 조건 when을 붙인것이 retryWhen 입니다. 우선 마블다이어그램 먼저 보시죠.굉장히 복잡하지만, 조금씩 정리해 보겠습니다. 참고로 마블 다이어그램에 대해서는 아래 글을 참조해주세요.>>> RxJava (RxAndroid) 의 마블 다이어그램을 .. 2017. 5. 25.
RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자. RxJava의 공식문서를 보면, 다양한 Operator들을 마블 다이어그램을 중심으로 설명하고 있습니다. 아래의 이미지는 reactivex.io사이트에 나와있는, Observable에 대한 설명인데요.역시 마블 다이어그램으로 설명되어 있네요. 아무것도 모르는 상태에서 보면, "이게 뭐지?" 싶지만, 하나하나 잘 살펴보면, 이해를 도와주는 좋은 툴이 될 수도 있습니다.오늘은 이 마블 다이어그램에 대해서 하나하나 뜯어보면서, 정리해 보도록 하겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 5. 24.
RxJava 의 FlatMap, From 그리고 filter 로 For문 에서 벗어나보자 RxJava의 장점중의 하나는 다양한 Operator의 제공인데요.오늘은 FlatMap과 From을 사용하여서,Observable이 흘려보내준 List아이템들을,for문을 돌리지 않고 filter를 하여,원하는 결과만을 얻을 수 있도록 하는 방법에 대해서 정리해보겠습니다. 혹시 RxAndroid 가 무엇인지에 대해서, 보고싶으시다면,아래의 글을 참조해 주세요~.>>> RxAndroid 이해하기 Part1 RxJava (RxAndroid)의 Map 과 FlatMap 메소드를 알아보자 RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자.) 하나의 Collections를 받아서, 각각의 아이템으로 흘려보내준다는 것을 알 수 있습니다. filter는 Operator의 단어만 봐도 아실것 같은데요... 2017. 3. 20.
RxAndroid :: Subscription 을 Unsubscribe 해서 Memory Leak을 막자 RxAndroid를 사용할 때 주의해야 할 부분 중에 하나는,적절한 시점에 unsubscribe해주지 않으면 메모리 leak으로 연결될수도 있다는 점인데요.오늘은 Subscription을 unsubcribe()하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 RxAndroid에 대한 기본적인 사항들은,아래링크에서 먼저 읽어주세요~.>>> RxAndroid 이해하기 Part1 RxAndroid의 Map 과 FlatMap 메소드를 알아보자 2017. 2. 22.
RxJava (RxAndroid)의 Map 과 FlatMap 메소드를 알아보자 RxAndroid (RxJava)는 유저들이 다양한 상황에서 쓸 수 있는, 메소드들을 제공해주는데요.오늘은 그중에서도, Map과 flatMap() 메소드에 대해서 정리해보고자 합니다. 혹시 RxAndroid 가 무엇인지에 대해서, 간단히 보고싶으시다면,아래의 글을 읽어주세요~.>>> RxAndroid 이해하기 Part1 2017. 2. 17.
RxAndroid 이해하기 Part1 RxAndroid는 Retrofit을 사용해보려고 하던차에 이와 궁합이 아주 좋으면서 AsyncTask를 대체할 라이브러리가 있다고 들어서 접하게 되었는데요. 조금씩 써보니 장점이 많은것 같아서 정리해보고자 합니다. 1. 라이브러리 설정 역시나 외부 라이브러리를 불러오는 것이니, Dependency 설정부터 합니다. 참고로, Gradle파일을 직접 수정하시는 분들은 가장 하단에 compile 'io.reactivex:rxjandroid:1.2.1' 만 추가하면 됩니다. 하지만, 요즘엔 이렇게 잘 않하시지요? ;) 2. RXANDROID의 4대 요소 RxAndroid는 크게 4가지로 구성되어 있는데요.ObservableObserverSchedulerSubScription이렇게 4가지 입니다. 2-1. Ob.. 2016. 12. 17.