반응형
제 7장, 디버깅과 예외 처리
디버깅
- doOnNext, doOnComplete, doOnError 함수
- doOnEach 함수 : notification<T> 객체를 전달받아서 이벤트별로 처리
- doOnSubscribe, doOnDispose, doOnLifeCycle(doOnSubscribe, doOnDispose 모두 호출)
- doOnTerminate : onComplete or OnError 이벤트 발생 직전에 실행하는 함수
예외처리
- onErrorReturn : 예외 발생이 예상되는 부분을 선언하여 처리. Observable을 생성하는 측과 구독하는 측이 서로 다를 수 있다는 점에서 구독자는 Observable에서 발생할 수 있는 예외를 구독한 이후에 모두 파악하기가 어려움. Observable을 생성하는 측에서 발생할 수 있는 예외처리를 해두면 구독자는 선언된 예외 상황을 보고 그에 맞는 처리 가능
- onErrorResumeNext : 에러가 발생했을 때 내가 원하는 Observable로 대체하는 방법
- retry : 예외가 발생할 때 다시 재구독 하게 됨. 통신 실패시 재시도와 같은 처리할 때, 재시도 횟수를 지정하거나 어떤 조건에서 재시도 할 것인지 다양한 오버로딩이 제공
- retryUntil : 재시도를 중단할 조건이 발생할 때까지 계속 재시도
- retryWhen : 재시도 조건을 동적으로 설정해야 하는 복잡한 로직을 구현할 때 활용
흐름제어
- Observable이 데이터를 발행하는 속도와 옵서버가 데이터를 받아서 처리하는 속도 사이의차이가 발생할 때 사용하는 함수
- Sampel, buffer, throttle, window, debounce 함수 등 제공
- Sample : 특정한 시간 동안 가장 최근에 발행된 데이터를 걸러주는 함수
- Buffer : 일정 시간 동안 데이터를 모아두었다가 한꺼번에 발행
- throttleFirst, throttleLast : 주어진 조건에서 가장 먼저 입력된 값을 발행, 가장 나중에 입력된 값을 발행
- Window : groupBy와 비슷한, 특정 조건에 맞는 입력값들을 그룹화하여 Observable을 생성.
- Debounce : 빠르게 연속 이벤트를 처리하는 흐름 제어 함수
제 8장, 테스팅과 Flowable
- 테스트 주도 개발 TDD : JUnit, xUnit
- 이클립스에서 지원, Junit5는 IntelliJ 지원
- @DisplayName을 통해 테스트케이스 ID을 적어두면 실무에서 사용할 때에도 편리
- TestObserver
- assertResult, assertFailure, assertFailureAndMessage, awaitDone,
- assertComplete, assertNotComplete
- Gradle 빌드 소스는 /src/main/java, 테스트 코드는 /src/test/java
- 테스트 코드에 해당하는 dependency로는 testCompile, testRuntime 등이 있음
- JUnit은 라이프 사이클이 있음
- @Disabled를 활용하여 테스트 코드 비활성화하기
- Flowable 클래스 : Observable 클래스의 성능을 향상시키기 위해 만든 클래스. 배압의 차이가 있음
- 데이터의 발행과 처리 속도가 차이가 나는걸 해결하기 어려울 때는 Flowable 사용 권장
- onBackPressureBuffer, onBackpressureDrop, onBackpressureLastest 배압 이슈를 해결하는 버퍼 만들기 함수
- 근본적인 해결은 sample, debounce 함수와 같은 흐름 제어 함수를 이용하는 것이다.
반응형
'Develop' 카테고리의 다른 글
[안드로이드 개발자를 위한 Kotlin(코틀린) 제대로 배우기 Part.1_기초2-2 (0) | 2020.08.24 |
---|---|
[안드로이드 개발자를 위한 Kotlin(코틀린) 제대로 배우기 Part.1_기초2 (0) | 2020.08.09 |
[안드로이드 개발자를 위한 Kotlin(코틀린) 제대로 배우기 Part.1_기초1 (0) | 2020.05.16 |
RxJava 프로그래밍2 (0) | 2020.05.03 |
[안드로이드 개발자를 위한 Kotlin(코틀린) 제대로 배우기 Part.1_기초1 (0) | 2020.05.03 |
댓글