302
2
부
-
비동기 기법
하는 스레드 통신을 통해 백그라운드 태스크 실행을 할 수 있게 한다. 즉,
AsyncTask
자체는 어
떤 제약도 가하지 않는다.
AsyncTask
는 스레드 간 메시지 전달을 숨기기 때문에 간혹 ‘안드로
이드의 스레드’라는 별칭으로 불리지만 이는 부정확한 말이다.
AsyncTask
를 잘 활용하면 백그라운드 스레드로 데이터 전달 및 진행 업데이트를 보고하고
UI
스
레드로 결과를 다시 보낼 수 있다. 이 또한 좋은 사용 사례가 될 수 있다. 그러나
10
장에서 보았듯
이 사용할 때 고려해야 하는 몇 가지 문제가 있다.
●
전역 실행 환경
●
플랫폼 버전에 따른 실행 유형의 차이
AsyncTask
는 종종 간단함이라는 장점 때문에 응용프로그램에서 과도하게 사용된다.
AsyncTask
는 안드로이드에서 비동기 실행을 위한 특효약이 아니다. 많은 사용 사례에서 아키텍처, 프로그
램 설계, 적은 에러 가능성 등의 이유로 다른 대안을 찾아야 한다.
15.4
예상치 못한 태스크 종료를 피하라
시스템 자원을 회수하기 위해 시스템이 응용프로그램을 종료할 때 시스템은 실행 중인 스레드를
고려하지 않는다. 따라서 응용프로그램 프로세스가 죽을 때 백그라운드 태스크가 예기치 않게
종료될 수 있다. 응용프로그램의 종료는 프로세스 순위에 기반해서 이루어지며(예를 들어 응용
프로그램이 화면에 보이지 않을 때 액티비티가 중지될 가능성), 실행 중인 서비스는 응용프로
그램 프로세스 순위를 높인다. 서비스를 사용하면 시스템 자원이 낮을 때 응용프로그