안드로이드 멀티스레딩: 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기

Book description

멀티스레딩은 뛰어난 사용자 경험을 제공하는 안드로이드 앱을 만드는 데 필수적이다. 주니어 안드로이드 개발자가 시니어 개발자로 발돋움하기 위해서라도 반드시 공부하고 넘어가야 하는 고급 주제이기도 하다. 이 책은 안드로이드 플랫폼에 특화된 여러 비동기 메커니즘을 설명하며, 앱에 가장 적합한 기법을 고를 수 있게 가이드라인을 제시한다. 베테랑 저자가 설명하는 지침과 조언을 숙지하면 날렵하고 안정적인 앱을 수월하게 만들 수 있다.

Table of contents

  1. 안드로이드 멀티스레딩
  2. 옮긴이의 말
  3. 지은이·옮긴이 소개
  4. 이 책에 대하여
  5. 감사의 글 (1/2)
  6. 감사의 글 (2/2)
  7. CHAPTER 1 안드로이드 구성요소와 멀티프로세싱의 필요성
    1. 1.1 안드로이드 소프트웨어 스택
    2. 1.2 응용프로그램 아키텍처
      1. 1.2.1 Application 객체
      2. 1.2.2 구성요소
    3. 1.3 응용프로그램 실행
      1. 1.3.1 리눅스 프로세스
      2. 1.3.2 생명주기
    4. 1.4 성능을 위해 구조화된 응용프로그램
      1. 1.4.1 스레드를 통해 반응성 있는 응용프로그램 만들기
    5. 1.5 마치며
  8. Part I 기초
    1. CHAPTER 2 자바의 멀티스레딩
      1. 2.1 스레드의 기본
        1. 2.1.1 실행
        2. 2.1.2 싱글스레드 응용프로그램
        3. 2.1.3 멀티스레드 응용프로그램
      2. 2.2 스레드 안전 (1/2)
      3. 2.2 스레드 안전 (2/2)
        1. 2.2.1 암시적 잠금과 자바 모니터
        2. 2.2.2 공유 자원 접근의 동기화
        3. 2.2.3 예제: 소비자와 생산자 스레드끼리 공동으로 작업하는 흔한 사용
      4. 2.3 태스크 실행 전략
        1. 2.3.1 동시 실행 설계
      5. 2.4 마치며
    2. CHAPTER 3 안드로이드 스레드
      1. 3.1 안드로이드 응용프로그램 스레드
        1. 3.1.1 UI 스레드
        2. 3.1.2 바인더 스레드
        3. 3.1.3 백그라운드 스레드
      2. 3.2 리눅스 프로세스와 스레드 (1/2)
      3. 3.2 리눅스 프로세스와 스레드 (2/2)
        1. 3.2.1 스케줄링
      4. 3.3 마치며
    3. CHAPTER 4 스레드 통신
      1. 4.1 파이프
        1. 4.1.1 기본 파이프 사용
        2. 4.1.2 예제: 작업자 스레드에서 문자 처리
      2. 4.2 공유 메모리
        1. 4.2.1 시그널링
      3. 4.3 블로킹 큐
      4. 4.4 안드로이드 메시지 전달 (1/6)
      5. 4.4 안드로이드 메시지 전달 (2/6)
      6. 4.4 안드로이드 메시지 전달 (3/6)
      7. 4.4 안드로이드 메시지 전달 (4/6)
      8. 4.4 안드로이드 메시지 전달 (5/6)
      9. 4.4 안드로이드 메시지 전달 (6/6)
        1. 4.4.1 예제: 기본 메시지 전달
        2. 4.4.2 메시지 전달에 사용되는 클래스
        3. 4.4.3 메시지
        4. 4.4.4 루퍼
        5. 4.4.5 핸들러
        6. 4.4.6 큐에서 메시지 제거
        7. 4.4.7 메시지 큐 관찰
      10. 4.5 UI 스레드와 통신
      11. 4.6 마치며
    4. CHAPTER 5 프로세스 간 통신
      1. 5.1 안드로이드 RPC
        1. 5.1.1 바인더
      2. 5.2 AIDL (1/2)
      3. 5.2 AIDL (2/2)
        1. 5.2.1 동기식 RPC
        2. 5.2.2 비동기식 RPC
      4. 5.3 바인더를 이용한 메시지 전달
        1. 5.3.1 단방향 통신
        2. 5.3.2 양방향 통신
      5. 5.4 마치며
    5. CHAPTER 6 메모리 관리
      1. 6.1 가비지 컬렉션
      2. 6.2 스레드 관련 메모리 누수 (1/3)
      3. 6.2 스레드 관련 메모리 누수 (2/3)
      4. 6.2 스레드 관련 메모리 누수 (3/3)
        1. 6.2.1 스레드 실행
        2. 6.2.2 스레드 통신
      5. 6.3 메모리 누수 방지
        1. 6.3.1 정적 내부 클래스 사용
        2. 6.3.2 약한 참조 사용
        3. 6.3.3 작업자 스레드 실행 중지
        4. 6.3.4 작업자 스레드 유지
        5. 6.3.5 메시지 큐 정리
      6. 6.4 마치며
  9. Part II 비동기 기법
    1. CHAPTER 7 기본 스레드의 생명주기 관리
      1. 7.1 기본사항
        1. 7.1.1 생명주기
        2. 7.1.2 인터럽트
        3. 7.1.3 잡히지 않은 예외
      2. 7.2 스레드 관리 (1/2)
      3. 7.2 스레드 관리 (2/2)
        1. 7.2.1 정의와 시작
        2. 7.2.2 유지
      4. 7.3 마치며
    2. CHAPTER 8 핸들러 스레드: 고수준 큐 메커니즘
      1. 8.1 기본사항
      2. 8.2 생명주기
      3. 8.3 사용 사례 (1/2)
      4. 8.3 사용 사례 (2/2)
        1. 8.3.1 반복되는 태스크 실행
        2. 8.3.2 관련 태스크
        3. 8.3.3 태스크 연쇄
        4. 8.3.4 조건부 태스크 삽입
      5. 8.4 마치며
    3. CHAPTER 9 Executor 프레임워크를 통한 스레드 실행 제어
      1. 9.1 Executor
      2. 9.2 스레드 풀 (1/3)
      3. 9.2 스레드 풀 (2/3)
      4. 9.2 스레드 풀 (3/3)
        1. 9.2.1 미리 정의된 스레드 풀
        2. 9.2.2 커스텀 스레드 풀
        3. 9.2.3 스레드 풀 설계
        4. 9.2.4 생명주기
        5. 9.2.5 스레드 풀의 중단
        6. 9.2.6 스레드 풀 사용 사례와 위험성
      5. 9.3 태스크 관리 (1/2)
      6. 9.3 태스크 관리 (2/2)
        1. 9.3.1 태스크 표현
        2. 9.3.2 태스크 보내기
        3. 9.3.3 태스크 거부하기
      7. 9.4 ExecutorCompletionService
      8. 9.5 마치며
    4. CHAPTER 10 AsyncTask로 백그라운드 태스크를 UI 스레드에 묶기
      1. 10.1 기본사항
        1. 10.1.1 생성과 시작
        2. 10.1.2 취소
        3. 10.1.3 상태
      2. 10.2 AsyncTask 구현
        1. 10.2.1 예제: 이미지 다운로드
      3. 10.3 백그라운드 태스크 실행 (1/2)
      4. 10.3 백그라운드 태스크 실행 (2/2)
        1. 10.3.1 응용프로그램 전역 실행
        2. 10.3.2 다양한 플랫폼 버전에서 실행
        3. 10.3.3 커스텀 실행
      5. 10.4 AsyncTask의 대안
        1. 10.4.1 AsyncTask가 너무 평범하게 구현된 경우
        2. 10.4.2 루퍼가 필요한 백그라운드 태스크
        3. 10.4.3 지역 서비스
        4. 10.4.4 execute(Runnable) 사용
      6. 10.5 마치며
    5. CHAPTER 11 서비스
      1. 11.1 비동기 실행을 위해 서비스를 사용해야 하는 이유
      2. 11.2 지역, 원격, 전역 서비스
      3. 11.3 생성과 실행
      4. 11.4 생명주기
      5. 11.5 시작 서비스 (1/3)
      6. 11.5 시작 서비스 (2/3)
      7. 11.5 시작 서비스 (3/3)
        1. 11.5.1 onStartCommand 구현
        2. 11.5.2 재시작을 위한 옵션
        3. 11.5.3 사용자 제어 서비스
        4. 11.5.4 태스크 제어 서비스
      8. 11.6 바운드 서비스 (1/2)
      9. 11.6 바운드 서비스 (2/2)
        1. 11.6.1 지역 바인딩
      10. 11.7 비동기 기술 선정
      11. 11.8 마치며
    6. CHAPTER 12 인텐트 서비스
      1. 12.1 기본사항
      2. 12.2 인텐트 서비스를 사용하는 좋은 방법 (1/2)
      3. 12.2 인텐트 서비스를 사용하는 좋은 방법 (2/2)
        1. 12.2.1 순차적으로 정렬된 태스크
        2. 12.2.2 브로드캐스트 리시버에서 비동기 실행
      4. 12.3 인텐트 서비스와 서비스
      5. 12.4 마치며
    7. CHAPTER 13 AsyncQueryHandler를 이용한 콘텐트 프로바이더 접근
      1. 13.1 콘텐트 프로바이더에 대한 간략한 소개
      2. 13.2 콘텐트 프로바이더의 백그라운드 처리에 대한 정당성
      3. 13.3 AsyncQueryHandler 사용 (1/2)
      4. 13.3 AsyncQueryHandler 사용 (2/2)
        1. 13.3.1 예제: 연락처 확장 리스트
        2. 13.3.2 AsyncQueryHandler 이해
        3. 13.3.3 한계
      5. 13.4 마치며
    8. CHAPTER 14 로더를 이용한 자동 백그라운드 실행
      1. 14.1 로더 프레임워크 (1/2)
      2. 14.1 로더 프레임워크 (2/2)
        1. 14.1.1 LoaderManager
        2. 14.1.2 LoaderCallbacks
        3. 14.1.3 AsyncTaskLoader
      3. 14.2 CursorLoader를 이용한 쉬운 데이터 로딩 (1/2)
      4. 14.2 CursorLoader를 이용한 쉬운 데이터 로딩 (2/2)
        1. 14.2.1 CursorLoader 사용하기
        2. 14.2.2 예제: 연락처 리스트
        3. 14.2.3 CRUD 지원 추가
      5. 14.3 커스텀 로더 구현 (1/3)
      6. 14.3 커스텀 로더 구현 (2/3)
      7. 14.3 커스텀 로더 구현 (3/3)
        1. 14.3.1 로더 생명주기
        2. 14.3.2 백그라운드 로딩
        3. 14.3.3 콘텐츠 관리
        4. 14.3.4 캐시된 결과를 전달
        5. 14.3.5 예제: 커스텀 파일 로더
        6. 14.3.6 여러 개의 로더 처리
      8. 14.4 마치며
    9. CHAPTER 15 비동기 기술의 선택
      1. 15.1 간단하게 하라
      2. 15.2 스레드와 자원 관리
      3. 15.3 반응성을 위한 메시지 전달
      4. 15.4 예상치 못한 태스크 종료를 피하라
      5. 15.5 콘텐트 프로바이더에 쉽게 접근

Product information

  • Title: 안드로이드 멀티스레딩: 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기
  • Author(s): 한대희, 안데르스 예란손
  • Release date: April 2016
  • Publisher(s): Hanbit Media, Inc.
  • ISBN: 9788968481703