RxJava2, RxAndroid2 26

RxAndroid2 중간에 멈출 수 있는 타이머만들기! Observable.interval

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 오랜만에 RxAndroid2 카테고리에 포스팅을 합니다.예전에 Observable.interval()메소드를 통해 타이머를 만드는 방법에 대해포스팅했었는데요.2018/10/10 - [RxJava2, RxAndroid2] - [RxAndroid2] Timer, TimerTask, CountDownTimer -> RxAndroid 로 바꿔보기 이번에는 이 타이머를 중간에 멈췄다가 다시 재생하는 방법에 대해 포스팅합니다. 방법은 정말 간단합니다. boolean 필드와 int 필드를 하나씩만 추가하면 끝입니다.private int seconds; boolea..

RxJava2, RxAndroid2 2019.05.20

[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] 비동기 코드 테스트하기

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 지난 포스팅에서 테스트에 대해 포스팅했습니다. 이번 포스팅에서는 비동기 코드를 테스트 하는 방법에 대해 공부합니다. 아래 두 테스트가 있습니다.wrongAsyncTest()는 비동기 테스트가 실패한 테스트고correctAsyncTest()는 성공한 테스트입니다.두 코드의 차이가 보이시나요?12345678910111213141516171819202122232425262728293031323334353637package rx.java.chapter08.test; import java.util.concurrent.TimeUnit; import org.jun..

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

[RxAndroid2] 메모리 누수를 잡아보자. Disposable, RxLifeCycle, CompositeDisposable

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 메모리 누수일반적으로 참조가 완료되었지만 할당한 메모리를 해제하지 않아서 발생.강한 참조의 경우 GC가 메모리에서 객체를 제거할 수 없기 때문에라이프 사이클에 맞게 객체 참조를 끊어주어야 사용하지 않는 메모리 해제 가능.시스템 전체 성능에 영향을 주는 요소이므로 중요하게 관리해야함. 메모리 누수 예제package park.sunggyun.thomas.rxandroidnetworkex; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widg..

RxJava2, RxAndroid2 2018.10.10

[RxAndroid2] Timer, TimerTask, CountDownTimer -> RxAndroid 로 바꿔보기

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 안드로이드에서 주기적으로 실행하는 동작을 구현할 때 일반적으로 Timer 클래스나 Handler 클래스를 사용합니다.Timerschedule()을 이용해서 지연시간을 설정하거나, 특정 시간에 특정 동작을실행할 수도 있고, 고정된 시간을 설정해서 동작을 반복실행할 수도 있습니다. HandlerpostDelayed() 로 지연시간 설정이나 반복 실행 구현 가능 Timer 사용 예제package park.sunggyun.thomas.rxandroidex; import android.os.Bundle; import android.support.annotati..

RxJava2, RxAndroid2 2018.10.10