서브메뉴
검색
본문
Powered by NAVER OpenAPI
-
안드로이드 프로그래밍 Next Step (제대로 된 앱을 만드는 컴포넌트 활용 노하우)
저자 : 노재춘
출판사 : 인사이트
출판년 : 2017
정가 : 25000, ISBN : 9788966263073
책소개
모든 문제는 컴포넌트를 제대로 다루지 못하는 데서 생긴다!
이 책을 보려는 사람들이라면 안드로이드를 공부하기 위해 두꺼운 입문서를 따라하면서 오랜 시간을 보냈을 것이다. 근사한 앱을 상상했지만 고생해서 만든 앱에서는 늘상 문제가 발생한다. 입문서에 나오지 않는 문제들을 해결하기 위해 개발자 가이드를 읽고, 구글을 검색해 보지만 군더더기가 많아지고 꼼수만 늘어간다. 제대로 된 앱을 만들기 위해서는 결국 안드로이드의 기본 원리를 정확히 알고 제대로 활용해야 한다. 그러기 위해서는 안드로이드 내부 구조를 정확히 이해하고 있어야 한다. 그래야 컴포넌트를 적재적소에서 정확히 활용할 수 있고, 유지보수가 쉬우면서도 진화할 수 있는 제대로 된 앱을 만들 수 있다.
이 책은 안드로이드의 기본 원리를 이해하고 이를 올바르게 적용하는 것에 중점을 둔다. 그러면서도 실무적인 내용을 담았는데, 다른 책에서는 가볍게 다뤄지는 내용이라도 현장에서 중요하게 쓰이는 것에 많은 분량을 할애하였다. 안드로이드 내부 구조를 설명하는 책이나 강의가 있기는 하지만 수준이 높거나 실무에서 활용하는 법은 잘 다루지 않곤 한다. 이 책이 입문서를 보고 난 후 방황하는 독자에게 도움이 되었으면 한다.
목차
1장 안드로이드 프레임워크
1.1 안드로이드 아키텍처 개요
1.1.1 애플리케이션
1.1.2 애플리케이션 프레임워크
1.1.3 안드로이드 런타임
1.1.4 라이브러리
1.1.5 리눅스 커널
1.2 프레임워크 소스
1.3 안드로이드 버전
1.3.1 호환성 모드
1.3.2 호환성 모드 동작 예시
1.3.3 단말 버전 체크
2장 메인 스레드와 Handler
2.1 UI 처리를 위한 메인 스레드
2.2 Looper 클래스
2.3 Message와 MessageQueue
2.4 Handler 클래스
2.4.1 Handler 생성자
2.4.2 Handler 동작
2.4.3 Handler 용도
2.4.4 Handler의 타이밍 이슈
2.5 UI 변경 메커니즘
2.6 ANR
2.6.1 ANR 타임아웃
2.6.2 프레임워크에서 ANR 판단
3장 백그라운드 스레드
3.1 HandlerThread 클래스
3.2 스레드 풀 사용
3.2.1 ThreadPoolExecutor 클래스
3.2.2 ScheduledThreadPoolExecutor 클래스
3.2.3 Executors 클래스
3.3 AsyncTask 클래스
3.3.1 백그라운드 스레드와 UI 스레드 구분
3.3.2 액티비티 종료 시점과 불일치
3.3.3 AsyncTask 취소
3.3.4 예외 처리 메서드 없음
3.3.5 병렬 실행 시 doInBackground() 실행 순서가 보장되지 않음
4장 Context
5장 액티비티
5.1 생명주기
5.1.1 액티비티 생명주기 다이어그램
5.1.2 생명주기 메서드 호출 시점
5.1.3 액티비티 시작 메서드
5.1.4 액티비티 전환 시 생명주기 메서드 호출
5.1.5 생명주기 메서드 사용 시 주의사항
5.2 구성 변경
5.2.1 리소스 반영
5.2.2 구성 변경으로 인한 액티비티 재시작
5.2.3 프레임워크 소스 확인
5.2.4 구성 한정자
5.2.5 데이터 복구
5.2.6 android:configChanges 속성
5.2.7 Configuration 클래스의 변수 확인
5.3 태스크
5.3.1 태스크 상태
5.3.2 dumpsys 명령어로 태스크 확인
5.3.3 taskAffinity 속성
5.3.4 태스크 속성 부여
5.4 〈activity-alias〉 선언
6장 서비스
6.1 스타티드 서비스
6.1.1 서비스 재시작 방식
6.1.2 멀티 스레드 이슈
6.1.3 외부 프로세스에서 암시적 인텐트로 서비스 시작
6.1.4 IntentService 클래스
6.1.5 서비스 중복 실행 방지
6.2 바운드 서비스
6.2.1 리모트 바인딩
6.2.2 로컬 바인딩
6.2.3 바인딩의 특성
6.2.4 Messenger 클래스
7장 콘텐트 프로바이더
7.1 SQLite
7.1.1 sqlite shell
7.1.2 DB 락 문제
7.1.3 SQLiteOpenHelper 클래스
7.2 콘텐트 프로바이더
7.2.1 로컬 프로세스에서 콘텐트 프로바이더 적용 기준
7.2.2 콘텐트 프로바이더 예제
7.2.3 배치 실행
7.3 SQLite/ContentProvider 관련 팁
7.3.1 쿼리 실행 확인
7.3.2 콘텐트 프로바이더 예외 확인
8장 브로드캐스트 리시버
8.1 브로드캐스트 리시버 구현
8.2 브로드캐스트 리시버 등록
8.2.1 브로드캐스트 리시버 정적 등록
8.2.2 브로드캐스트 리시버 동적 등록
8.3 오더드 브로드캐스트
8.4 스티키 브로드캐스트
8.5 LocalBroadcastManager 클래스
8.6 앱 위젯
8.6.1 앱 위젯의 특성
8.6.2 AppWidgetProvider 클래스
8.6.3 RemoteViews 클래스
8.6.4 앱 위젯 업데이트
8.6.5 유의할 점
9장 Application
9.1 앱 초기화
9.2 Application 콜백
9.2.1 ComponentCallbacks2 인터페이스
9.2.2 Application에 등록하는 콜백
9.3 프로세스 분리
9.3.1 프로세스 분리가 필요한 때
9.3.2 분리된 프로세스에서 Application은 새로 시작
9.3.3 프로세스 분리 시 주의할 점
10장 시스템 서비스
10.1 시스템 서비스 기본
10.2 dumpsys 명령어
10.3 시스템 서비스 이슈
10.3.1 빈번한 리모트 호출을 줄여야 함
10.3.2 전원 관리와 딥 슬립
10.3.3 알람 등록과 제거
11장 구현 패턴
11.1 싱글톤 패턴
11.1.1 싱글톤에 Context를 전달하는 방법
11.1.2 메모리 누수 검증
11.2 마커 인터페이스
11.3 Fragment 정적 생성