리액티브 안드로이드 프로그래밍 [RxJava로 안드로이드 애플리케이션 제작하기]
- 원서명Reactive Android Programming: Learn to build Android application using RxJava (ISBN 9781787289901)
- 지은이타다스 수보니스(Tadas Subonis)
- 옮긴이김성일
- ISBN : 9791161752105
- 30,000원
- 2018년 09월 19일 펴냄 (절판)
- 페이퍼백 | 328쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 모바일 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
RxJava가 제공하는 다양한 도구를 초보 개발자에게 소개하며, 비동기 작업을 위한 강력하고 고품질의 코드를 만들 수 있도록 한다. 고품질의 제품을 만들기 위해 고급 RxJava 기술을 사용하여 비교적 간단한 애플리케이션을 예제로 만들면서 배울 수 있다.
이 책에서 다루는 내용
■ 비동기적인 리액티브 안드로이드 프로그래밍을 위한 환경 설정 방법
■ 커스텀 옵저버블 작성법과 고차원 추상화
■ 리액티브 프로그래밍 원칙을 사용한 여러 호출의 조율
■ RxJava를 사용해 원격 주식 데이터 가져오기
■ 트위터 스트림을 정상적으로 통합하고 처리하기
■ 리액티브 프로그래밍을 활용해 대화형이자 반응형인 안드로이드 앱 개발
■ 선택한 회사의 심볼을 기반으로 실시간으로 주식 정보를 추적할 수 있는 애플리케이션 제작
■ 해당 회사의 트위터로부터 업데이트 통합
이 책의 대상 독자
전문가일 필요는 없지만, 안드로이드에 익숙하고 이벤트 처리와 비동기 작업, 병렬 처리 코드의 품질을 향상하고자 하는 개발자를 대상으로 한다.
이 책의 구성
1장, ‘첫 “Hello World” RxJava 애플리케이션 만들기’에서는 RxJava의 초기 설정에 대해 간단히 다룰것이다. 아주 간단할지라도 리액티브 방식의 첫 번째 “Hello World” 메시지를 생성하는 데 사용한다. 이를 위해 RxJava 의존성과 레트로람다(Retrolambda)를 설정해 애플리케이션이 Java 8에서 람다lambda를 지원하도록 한다.
2장, ‘기본 RxJava의 이해’에서는 RxJava의 핵심 요소를 설명한다. 옵저버블, 구독자(Subscriber), 플로어블(Flowable) 등이 무엇인지 배운다. 이 기본 빌딩 블록은 이 책에서 광범위하게 사용한다.
3장, ‘주식 데이터를 가져오면서 레트로핏 사용법 배우기’에서는 인터넷 연결에 의존하지 않는 현대애플리케이션은 거의 없음을 이해한다. 가장 인기 있는 레트로핏 라이브러리를 사용해 HTTP 요청을 수행하는 방법과 데이터 처리의 기본 원리를 학습한다. 이 모든 작업은 원격 주식 시세 데이터를 가져와 UI에 표시하는 동안 수행한다.
4장, ‘RxJava 1.0과 RxJava 2.0의 통합’에서는 RxJava 2.0이 최근에 나온 것과 많은 라이브러리가 아직 RxJava 1.0에서만 사용할 수 있음을 설명한다. 여기서는 서로 다른 버전의 RxJava 연결 방법을 배운다.
5장, ‘SQLite에 데이터 쓰기와 스케줄러’에서는 데이터 저장에 가장 많이 사용되는 SQLite 데이터베이스를 이야기한다. RxJava를 사용하면 StorIO와 같은 라이브러리를 사용해 상호작용을 리액티브로 만들 수 있다. 추가로 개발자가 실제 계산이 실행되는 위치를 변경할 수 있도록 스케줄러를 다룬다.
6장, ‘오류 처리와 SQLite 데이터 읽기’에서는 코드를 작성하는 동안 가장 중요한 측면 중 하나인 오류 처리를 설명한다. RxJava에서 오류 처리를 수행하는 다양한 방법을 배운다. 또한 StorIO를 사용해 이전에 SQLite에 저장된 주식 데이터 읽는 법을 배운다.
7장, ‘RxJava와 액티비티 생명 주기 통합’에서는 안드로이드와 RxJava의 매우 중요한 측면인 리소스 부족에 대해 배울 것이다. 여기서 액티비티 생명 주기를 자세히 살펴보고 생명 주기(Activity Lifecycle) 메소드를 RxJava에 연결할 방법을 모색해 메모리와 스레드 누수 방지법을 학습한다.
8장. ‘커스텀 옵저버블 작성’에서는 커스텀 옵저버블 생성을 살펴본다. 트위터 업데이트의 끝없는 스트림을 소비하기 위해 커스텀 옵저버블을 만들어 이 작업을 수행한다. 이러한 업데이트는 기존 주식 시세 데이터 흐름에 통합돼 UI에 표시된다.
9장, ‘고급 옵저버블 흐름’에서는 RxJava에서 사용할 수 있는 여러 연산을 학습한다. .zip()과 .flatMap() 연산자의 작동 방식과 사용 방법을 알아본다. 또한 .groupBy() 및 .switchMap()과 같은 고급 연산자도 살펴볼 것이다.
10장, ‘고차원 추상화’에서는 코드가 쉽게 복잡해지기 때문에 리팩토링에 익숙해져서 코드를 단순화하고 불필요한 세부 사항을 추상화하는 데 매우 유용하도록 설명한다. 여기서 메소드 추출과 정적 메소드 팩토리, 기타 방법을 통해 고차원 추상화 달성에 도움되는 방법을 학습한다.
11장, ‘서브젝트의 기본과 환경 설정’에서는 저장 데이터 프로듀서(producer)와 컨슈머(consumer)처럼 동작하는 편리한 도구로 서브젝트(subject)를 다룬다. 서브젝트가 어떻게 작동하는지 배우게 될 것이고, 다른 유형의 서브젝트를 다룰 것이다. 11장 이후로 다양한 서브젝트 유형을 사용할 수 있고 어떤 사례가 적합한지 알 수 있다.
12장, ‘구슬 다이어그램 읽는 법’에서는 구슬 다이어그램의 예를 탐구하고 설명한다. 거의 모든 작업이 구슬 다이어그램으로 설명되므로 구슬 다이어그램과 이를 읽는 방법에 대한 지식은 RxJava 공식 문서를 읽으려 할 때 특히 유용할 것이다.
상세 이미지
목차
목차
- 1장. 첫 “Hello World” RxJava 애플리케이션 만들기
- 애플리케이션 생성
- 디펜던시
- 최초의 사용자 인터페이스
- 레트로람다 사용
- 요약
- 애플리케이션 생성
- 2장. 기본 RxJava의 이해
- 옵저버블
- 핫 그리고 콜드 옵저버블
- 디스포저블
- 스케줄러
- 스케줄링 예제
- 옵저버블의 흐름 조사
- 플로어블
- 아이템 버리기
- 마지막 아이템 유지하기
- 버퍼링
- 컴플리터블, 싱글, 메이비 타입
- 컴플리터블
- 싱글
- 메이비
- 요약
- 옵저버블
- 3장. 주식 데이터를 가져오면서 레트로핏 사용법 배우기
- 레트로핏 설정
- HTTP 요청
- 서비스 인터페이스
- 서비스 팩토리
- 서비스 생성
- 요청 데이터 변환
- JSON 분석
- 데이터 불러오기
- JSON 값 객체 변환
- UI에 데이터 표현하기
- 주기적인 업데이트
- UI에서 여러 레코드 처리
- 요약
- 4장. RxJava 1.0을 RxJava 2.0과 통합하기
- 버전 간 차이점
- 디펜던시 및 패키지 이름
- 함수형 인터페이스
- 플로어블
- 다른 RxJava 버전 통합
- 설정
- RxJava 1.0 옵저버블 변환
- 요약
- 버전 간 차이점
- 5장. SQLite와 스케줄러에 데이터 작성하기
- 스케줄러
- 스케줄러 타입
- 스케줄러 사용
- 병렬 처리 달성
- StorIO를 이용한 데이터 입력
- StorIO 설정
- StorIO 구성
- 데이터 저장 흐름
- 요약
- 스케줄러
- 6장. 에러 핸들링과 SQLite 데이터 읽기
- RxJava의 예외 처리
- subscribe() 사용
- onExceptionResumeNext() 사용
- doOnError() 사용
- 기타 오류 처리 방법
- 안드로이드 UI의 오류 표시
- 중앙 집중식 에러 로깅
- StorIO로 SQLite 데이터 읽기
- 리졸버 얻기
- StockUpdate 항목에 대한 오프라인 대체
- 사용자에게 오류에 대해 알리기
- 누락된 삭제 리졸버
- 요약
- RxJava의 예외 처리
- 7장. RxJava와 액티비티 생명 주기의 통합
- 안드로이드 생명 주기
- 생명 주기 검토
- 액티비티 설정
- onCreate() 호출에 대해 알아야 할 사항
- 리소스 누수
- 메모리 누수
- 옵저버블 누수
- 구독 정리
- 디스포저블 사용
- RxLifecycle 라이브러리 활용
- 안드로이드 생명 주기
- 8장. 커스텀 옵저버블 작성
- 커스텀 옵저버블을 만드는 방법
- 표준 Java API와의 통합
- 이미터 API와 통합
- 리액티브 방식으로 주식에 대한 트윗 읽기
- 설정
- 트위터를 위한 커스텀 옵저버블
- UI에 트윗 표시
- 값 객체 업데이트
- 레이아웃 업데이트
- 기타 개선 사항
- 요약
- 커스텀 옵저버블을 만드는 방법
- 9장. 고급 옵저버블 흐름 설명
- 옵저버블 벗기기
- 맵을 이용해 값 변환하기
- FlatMap 옵저버블
- 값 전달
- 튜플
- 커스텀 클래스
- 업데이트된 흐름
- 아이템 결합
- ZIP
- 최신 항목 결합
- 스트림 연결하기
- 필터링
- 주식 어댑터 청소
- 트윗 필터링
- 요약
- 옵저버블 벗기기
- 10장. 고차원 추상화
- 메소드로 코드 추출
- 조건을 명시적으로 만들기
- 컨슈머 추출
- FlatMap 추출
- 팩토리 메소드의 작성
- 변환 사용하기
- 정규 코드 추출
- 변환으로 코드 단순화
- 변환 클래스 생성
- 파일 기반 캐싱 예제
- 변환을 사용해 실행 시간 추적하기
- 옵저버블을 디버깅하기 위해 변환 사용하기
- 요약
- 메소드로 코드 추출
- 11장. 서브젝트의 기본과 환경 설정 저장
- 서브젝트
- PublishSubject
- BehaviorSubject
- ReplaySubject
- AsyncSubject
- 애플리케이션에서 서브젝트 사용
- RxPreferences 사용
- 설정에 서브젝트 연결
- 설정 액티비티 생성
- 흐름 업데이트
- 요약
- 서브젝트
- 12장. 구슬 다이어그램 읽는 법
- 구슬 다이어그램의 핵심 요소
- 다이어그램의 요소
- RxMarbles 도구
- 연산자 분석
- Map
- FlatMap
- onExceptionResumeNext()
- GroupBy
- SubscribeOn과 ObserveOn
- BehaviorSubject
- 요약
- 구슬 다이어그램의 핵심 요소
도서 오류 신고
정오표
정오표
[1장. gradle 최신 버전 업데이트 후 에러 발생 시 해결 방법]
여기에서 내려받으세요.