-
-
안드로이드 멀티스레딩 - 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기
안데르스 예란손 지음, 한대희 옮김 / 한빛미디어 / 2015년 3월
평점 :
절판
안드로이드를 어느 정도 사용하다보면 멀티스레딩 관련하여 한번씩 문제에 봉착하는 경우가 많다. (또는 좀 더 원리를 터득하여 효과적인 사용법을 익히보고 싶은 생각이 나는 경우가 있다.)
그리고 한단계 높은 프로그래밍 실력을 갖추길 원한다면 멀티스레딩은 꼭 넘어야 할 산과 같다. (C를 배울때 포인터가 산인 것처럼..)
프로그래밍을 하다보면 아래와 같은 경우가 많이 발생하는데, 대부분 스레드를 사용함에 따라 문제가 발생하는 경우가 많다.(잘못걸리면 정말 찾기 어려운 런타임에러가 발생한다.
)
게다가 일반적인 스레드 사용법뿐만 아니라 안드로이드에서 사용하는 비동기 메커니즘(Loader, Executeor, 비동기 핸들러, AsyncQueryHandler) 또한 정확히 알고 있어야 더욱 안정적이고 효과적인 프로그래밍(반응성이 높고 구조화가 잘된 멀티스레딩)이 가능하다. 그리고 이 책을 통해 아래와 같은 것들을 배울 수 있다. (이책은 멀티스레딩 스킬 향상, 앱 성능 향상, 시니어 개발자되기 원하는 주니어 안드로이드 개발자가 대상이다.)
- 자바 및 안드로이드 플랫폼에서의 멀티스레딩 기초를 이해한다.
- 프로세스 내부 및 프로세스 간 스레드 통신을 배운다.
- 메모리 누수의 위험을 줄일 수 있는 전략을 사용한다.
- 기본 스레드의 생명주기를 관리한다.
- 핸들러 스레드를 사용해 백그라운드에서 태스크를 순차적으로 실행한다.
- 자바 Executeor 프레임워크를 사용하여 스레드를 관리 및 취소한다.
- AsyncTask 및 IntentService를 통해 백그라운드 태스크 실행을 처리한다.
- AsyncQueryHandler를 통해 콘텐츠 프로바이더에 접근한다.
- 로더를 이용해 UI에 새로운 데이터를 업데이트한다.
이 책은 2부로 구성되어 있고, 1부는 스레드의 기초와 스레드가 응용프로그램에 미치는 영향에 대해 설명했으며, 2부에서는 응용프로그램에서 사용되는 비동기 메커니즘의 처리에 대해서 설명하고 있다.
아래는 각장을 요약하여 정리한 것이다.
1-1. 안드로이드 응용프로그램의 다양한 구성요소와 안드로이드 런타임 구조가 어떻게 스레드와 멀티프로세싱의 사용에 영향을 미치는지 설명한다.
1-2. 자바에서 동시 실행의 기본을 다룬다.
1-3. 안드로이드가 스레드를 처리하는 방법과 응용프로그램의 스레드가 리눅스 OS에서 실행되는 방법을 설명한다. 여기에는 스케줄링과 컨트롤 그룹control group뿐만 아니라 응답에 미치는 영향과 같은 중요한 주제도 포함한다.
1-4. 스레드 간의 기본 통신 수단으로 공유 메모리shared memory, 시그널signal, 그리고 일반적으로사용하는 안드로이드 메시지를 다룬다.
1-5. RPC, 메시징 등과 같은 메커니즘으로 안드로이드가 리눅스의 IPC 메커니즘을 향상시키는 방법을 보여준다.
1-6. 시스템을 저하시키고 사용자가 응용프로그램을 삭제하게 만드는 원인이 되는 누수를 피하는 방법을 설명한다.
2-1. 가장 기본인 비동기 구문(java.lang.Thread )을 설명하고, 스레드의 다양한 상태와 발생 할 수 있는 문제를 처리하는 방법을 살펴본다.
2-2. 백그라운드에서 태스크를 순차적으로 실행하는 편리한 방법을 살펴본다.
2-3. 스케줄링, 에러, 그리고 스레드 풀과 같은 스레드 처리의 다른 측면을 다루는 기술을 제공한다.
2-4. 가장 많이 사용하는 비동기 기법인 AsyncTask를 살펴보고, 이 기법의 위험을 피해 올바르게 사용하는 방법을 다룬다.
2-5. 여러 응용프로그램에 제공되는 기능이나 백그라운드 실행을 하는 동안 응용프로그램이 살아 있도록 하는 데 유용하게 쓰이는 필수 서비스 구성요소를 설명한다.
2-6. 이전 장을 기반으로, 기본 UI 스레드를 실행하기 위한 유용한 기술에 대한 논의를 다룬다.
2-7. 콘텐트 프로바이더content provider에 대한 빠른 비동기식 접근을 간소화하는 높은 수준의 메커니즘을 다룬다.
2-8. 변경된 데이터가 전달될 때마다 비동기식으로 새로운 데이터가 전달되는 로더를 통해 UI를 업데이트하는 방법을 알아본다.
2-9. 이 책에서 기술된 모든 기법을 고려해볼 때, 어떻게 응용프로그램에 알맞은 기법을 선택할 수 있을까? 이 장에서는 이러한 선택을 위한 지침을 제공한다.
이 책을 전반부에 스레드에 대한 기초적인 설명이 있지만, 간략하게 소개하기 때문에 조금 더 자세한 부분들은 직접 찾아 볼 필요가 있다. 후반부에서 안드로이드의 비동기 메커니즘을 설명하는 부분은 난이도가 조금 있지만 반드시 이해하고 넘어가길 바란다. 적재적소에 쓸 수 있는 기술을 배울 수 있기 때문이다. 이 책을 읽으면서 조금 아쉬운 부분은 번역이 조금 매끄럽지 못한 부분이 눈에 띈다는 것이다. 이에 반해 편집은 무난하게 된 것 같다. 아마 다음판에는 매끄럽지 못한 번역 부분은 정리할 것이라 생각된다.
이 책 한권으로 안드로이드 고수가 될 수는 없지만, 자신의 실력을 향상하는데 있어 벽돌 한장의 역할은 충분히하는 것 같다. 이 책은 비동기 메커니즘을 정리한 거의 유일한 책이므로 한번쯤은 꼭 읽어보길 권합니다.