000 | 00000cam c2200205 c 4500 | |
001 | 000045941169 | |
005 | 20180511130834 | |
007 | ta | |
008 | 180511s2017 ulka 001c kor | |
020 | ▼a 9788966263073 ▼g 93000 | |
035 | ▼a (KERIS)BIB000014526652 | |
040 | ▼a 241050 ▼c 241050 ▼d 211009 | |
082 | 0 4 | ▼a 005.268 ▼2 23 |
085 | ▼a 005.268 ▼2 DDCK | |
090 | ▼a 005.268 ▼b 2017z4 | |
100 | 1 | ▼a 노재춘 |
245 | 1 0 | ▼a 안드로이드 프로그래밍 next step : ▼b 제대로 된 앱을 만드는 컴포넌트 활용 노하우 / ▼d 노재춘 지음 |
260 | ▼a 서울 : ▼b 인사이트, ▼c 2017 | |
300 | ▼a 271 p. : ▼b 삽화 ; ▼c 25 cm | |
440 | 0 0 | ▼a 프로그래밍 인사이트 |
500 | ▼a 색인수록 | |
945 | ▼a KLPA |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.268 2017z4 | Accession No. 121244473 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
프로그래밍 인사이트 시리즈. 안드로이드의 기본 원리를 이해하고 이를 올바르게 적용하는 것에 중점을 둔 책이다. 그러면서도 실무적인 내용을 담았는데, 다른 책에서는 가볍게 다뤄지는 내용이라도 현장에서 중요하게 쓰이는 것에 많은 분량을 할애했다.
제대로 된 앱을 만들기 위해서는 안드로이드의 기본 원리를 정확히 알고 제대로 활용해야 한다. 또한 안드로이드 내부 구조를 정확히 이해하고 있어야 한다. 보고 따라하며 실제 업무에서 알아야 할 다양한 크리티컬 이슈, 군더더기 없는 정확한 소스, 안드로이드 버전, 단말의 종류 등 환경 변화에 능동적으로 대처할 수 있는 앱에 대한 아이디어를 얻을 수 있을 것이다.
모든 문제는 컴포넌트를 제대로 다루지 못하는 데서 생긴다!
이 책을 보려는 사람들이라면 안드로이드를 공부하기 위해 두꺼운 입문서를 따라하면서 오랜 시간을 보냈을 것이다. 근사한 앱을 상상했지만 고생해서 만든 앱에서는 늘상 문제가 발생한다. 입문서에 나오지 않는 문제들을 해결하기 위해 개발자 가이드를 읽고, 구글을 검색해 보지만 군더더기가 많아지고 꼼수만 늘어간다.
제대로 된 앱을 만들기 위해서는 결국 안드로이드의 기본 원리를 정확히 알고 제대로 활용해야 한다. 그러기 위해서는 안드로이드 내부 구조를 정확히 이해하고 있어야 한다. 그래야 컴포넌트를 적재적소에서 정확히 활용할 수 있고, 유지보수가 쉬우면서도 진화할 수 있는 제대로 된 앱을 만들 수 있다.
이 책은 안드로이드의 기본 원리를 이해하고 이를 올바르게 적용하는 것에 중점을 둔다. 그러면서도 실무적인 내용을 담았는데, 다른 책에서는 가볍게 다뤄지는 내용이라도 현장에서 중요하게 쓰이는 것에 많은 분량을 할애하였다. 안드로이드 내부 구조를 설명하는 책이나 강의가 있기는 하지만 수준이 높거나 실무에서 활용하는 법은 잘 다루지 않곤 한다. 이 책이 입문서를 보고 난 후 방황하는 독자에게 도움이 되었으면 한다.
대상독자
- 앱을 개발하면서 자신이 정말 제대로 만들고 있는지, 문제를 올바르게 해결하고 있는지 의문을 갖는 분
- 안드로이드 컴포넌트를 어떤 식으로 활용할지 잘 모르겠는 분
- 실제 예를 단순히 따라하기보다는 개념이 어떻게 적용되는지를 알고 싶은 분
- 실제 업무에서 알아야 할 다양한 크리티컬 이슈를 알고 싶은 분
- 군더더기 없는 정확한 소스를 작성하고 싶은 분
- 안드로이드 버전, 단말의 종류 등 환경 변화에 능동적으로 대처할 수 있는 앱을 만들고 싶은 분
- 안드로이드 앱 개발을 설명하는 책도 보고, 안드로이드 프레임워크를 설명하는 책도 봤지만 프레임워크를 앱 개발에 잘 적용하려면 어떻게 해야 하는지 도무지 모르겠는 분
Information Provided By: :

Author Introduction
노재춘(지은이)
서울대 수학과를 졸업한 후 작은 IT 회사에서 직장 생활을 시작했고, 그 회사를 다니면서 저녁과 주말을 이용해 독학으로 프로그래밍에 입문하였다. 현재 네이버에 재직 중이고 차량용 인포테인먼트 앱을 만들고 있다. 네이버에서 안드로이드 사내 강의를 수차례 진행했고 각종 스터디에도 꾸준히 참여하고 있다. 앱을 개발하면서 크래시를 많이 발생시키기도 했는데, 그 경험을 바탕으로 문제의 원인을 찾아 근본적으로 해결하는 것에 관심이 많아졌다. 웹 개발 서적인 『모델 2로 다시 배우는 JSP』(공저, 2003년, 한빛미디어)를 저술했다. 두 아이와 많이 놀고 싶어하고, 승마 얘기만 나오면 말이 많아지는 평범한 개발자다.

Table of Contents
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선언
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 정적 생성
Information Provided By: :
