본문 바로가기
반응형

RxJava10

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.