RxJava2 14

[RxJava2] Flowable 과 배압

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Flowable 과 배압에 대해 공부합니다. Flowable은 Observable 사용 시 발생할 수 있는 BackPressure배압을 해결하기 위해 존재하는 클래스입니다.사용방법은 Observable과 동일합니다.1234567891011121314151617181920212223package rx.java.chapter08.flowable; import io.reactivex.BackpressureStrategy;import io.reactivex.Flowable;import io.reactivex.Observable; public..

RxJava2, RxAndroid2 2018.10.12

[RxJava2] JUnit 5 + RxJava2 로 테스트 코드 짜기

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Java의 JUnit 5 와 RxJava2를 사용해 테스트 코드를 짜보겠습니다. 테스트의 중요성SW 의 품질은 테스트에서 결정되는데요.때문에 테스트 주도 개발이라는 개발 방법론까지 있을 정도로코드가 정상적으로 동작하는지 검증하는 테스트 코드는 중요합니다. 현재 자바에서 테스트 코드를 작성하는 가장 유명한 라이브러리가제목처럼 JUnit 인데요. 현재 JUnit 5 버전까지 릴리즈 되었습니다. 테스트 코드 작성 환경은이클립스 최신 버전인 PHOTON 버전입니다.메이븐 프로젝트를 만들어주시고 pom.xml 파일에JUnit 사용을 위한 아래..

RxJava2, RxAndroid2 2018.10.12

[RxJava2] 흐름제어 함수 : sample(), buffer(), throttleFirst(), throttleLast(), window(), debounce()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 RxJava2 의 흐름 제어 함수에 대해서 공부합니다.지난 포스팅 마지막에 쓴 것 처럼 Observable이 데이터를 발행하는 속도와옵저버가 데이터를 받아서 처리하는 속도 사이의 차이가 발생할 때사용하는 함수가 흐름 제어 함수입니다. RxJava2 는 푸시 방식으로 동작하므로 이런 문제를 해결할 수 있어야 합니다. sample()특정 시간동안 가장 최근에 발행된 데이터만 걸러내줍니다.1234567891011121314151617181920212223242526272829303132333435package rx.java.chapter0..

RxJava2, RxAndroid2 2018.10.11

[RxJava2] 예외처리2 - 재시도 : retry(), retryUntil(), retryWhen()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 예외처리 두 번째재시도 함수들에 대해 공부합니다. 서버와 통신을 할 때 인터넷이 일시적으로 안되거나 서버에 일시적으로 장애가발생하면 클라이언트에서는 일정 시간 후에 다시 통신을 요청하는 기능을구현해놓을 필요가 있습니다.이 때 1개의 API가 아닌 다수의 API 를 연속하여 호출해야 하는 시나리오가 있다면꽤나 복잡해질 수도 있겠죠? RxJava2에서는 이런 것들을 단순하게 처리할 수 있도록retryXXX() 함수들을 제공합니다. retry()Observable에서 onError() 이벤트 발생 시 바로 다시 subscribe()를 호출..

RxJava2, RxAndroid2 2018.10.11

[RxJava2] RxJava의 예외처리1 : onErrorReturn(), onError(), onErrorReturnItem(), onErrorResumeNext()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 원래 자바에서는 예외처리를 위해try{} catch() {} 블록을 사용합니다.하지만 RxJava에서는 try{} catch{} 블록을 사용하지 않습니다. RxJava에 try{} catch{}문을 사용해보면 아래와 같은데요.1234567891011121314151617181920212223package rx.java.chapter07; import io.reactivex.Observable; public class UseTryCatchExcetionEx { public static void main(String[] args) { Observable ..

RxJava2, RxAndroid2 2018.10.11

[RxJava2] RxJava 에서의 디버깅 : doOnNext(), doOnComplete(), doOnError(), doOnEach(), doOnSubscribe(), doOnDispose(), etc.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 디버깅에 대해 공부합니다.일반적으로 코딩하면서 코드 중간 중간에 로그를 넣는 경우가 많은데요. 그 이유는 중간 중간 순서가 제대로 맞지 않거나하는 잘못된 경우를 위해서 입니다.BUT RxJava에는 로그를 넣을 공간이 없는데요.대신에 부수효과를 일으키는 doOnXXX 함수들을 제공합니다. doOnNext(), doOnComplete(), doOnError()Observable의 알림 이벤트에 해당.doOnNext()Observable이 어떠한 데이터를 발행했을 때 이벤트 발생.doOnError()중간에 에러가 발생했을 때 이벤트 발생..

RxJava2, RxAndroid2 2018.10.11

[RxJava2] 리액티브 RxJava2Extensions 라이브러리에 있는 연산자 : count(), max(), min(), sumInt(), averageDouble(), delay(), timeInterval()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 RxJava2Extenions 라이브러리에 있는 연산자들 중count(), max(), min(), sumInt(), averageDouble() 에 대해 공부합니다.그리고 delay(), timeInterval() 에 대해서도 공부합니다. count()Observable에서 발행한 데이터의 갯수를 발행합니다.결과 값은 항상 한 개의 값만 가지므로 Single으로 발행합니다. max(), min()이름처럼 최댓값과 최솟값을 발행합니다. sumInt(), averageDouble()이 함수들도 이름 그대로 입니다. 정수 값으로 합을 구..

RxJava2, RxAndroid2 2018.10.02

[RxJava2] 리액티브 조건 연산자 : amb(), takeUntil(), skipUntil(), all()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 조건(condition) 연산자에 대해 공부합니다. 조건 연산자흐름을 제어하는 역할 amb()Observable이 여러개 들어왔을 때 먼저 나오는 Observable을 선택해서 발행함.123456789101112131415161718192021222324252627282930313233343536373839package rx.java.chapter04.condition; import java.util.Arrays;import java.util.List;import java.util.concurrent.TimeUnit; import i..

RxJava2, RxAndroid2 2018.10.01

[RxJava2] 리액티브 결합 연산자 : zip(), zipWith(), combineLatest(), merge(), concat()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 결합 연산자에 대해서 공부합니다. 결합 연산자여러 개의 Observable을 조합하여 활용하는 연산자. zip()입력 Observable에서 데이터를 모두 새로 발행했을 경우 데이터들을 합해줍니다.입력되는 모든 Observable을 활용해서 Observable을 결합합니다.1234567891011121314151617181920package rx.java.chapter04.combine; import io.reactivex.Observable; public class ZipNumberEx { public static void main..

RxJava2, RxAndroid2 2018.10.01

[RxJava2] 리액티브 변환 연산자 : concatMap(), switchMap(), groupBy(), scan()

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 변환 연산자 4 개에 대해 공부합니다. 변환 연산자만들어진 데이터의 흐름을 원하는 대로 변형할 수 있다. concatMap()이전에 배운 flatMap()은 먼저 들어온 데이터를 처리하는 도중 새로운 데이터가들어오게 되면 나중에 들어온 데이터가 먼저 출력될 수도 있는데,이것을 인터리빙이라고 합니다.concatMap()은 이 인터리빙 없습니다.즉. 항상 먼저 들어온 데이터를 먼저 처리합니다. => 순서 보장.예제와 주석.12345678910111213141516171819202122232425262728293031323334353637..

RxJava2, RxAndroid2 2018.10.01