이번시간은 AsyncQueryHandler 를 사용하여 콘텐트 프로바이더에서 비동기적 CRUD 작업 처리를 전문으로 하는 유틸리티 클래스이다. 클래스는 UI스레드에서 콘텐트 프로바이드 작업을 떠넘기는 데 사용되고, UI 스레드는 백그라운드 태스크가 완료되면 수신한다. 다음 주제에 대해 배워보도록하자콘텐트 프로바이더의 기본과 동시 접근AsyncQueryHandler를 구현하고 사용하는 방법백그라운드 실행에 대한 이해해13.1 콘텐트 프로바이더에 대한 간략한 소개 콘텐트 프로바이더는 데이터베이스 중심의 네 가지 접근 메서드인 CRUD 접근 방식을 통해 데이터를 읽고, 추가하고, 변경하고, 삭제할 수 있는 인터페이스를 제공한다. 커스텀 프로바이더 public class EatContentProvider ext..
11장에서는 런타임에 의한 백그라운드 스레드의 종료를 피하면서, 서비스 생명주기가 비동기 실행을 처리하는 방법에 대해 논의했다. 그러나 서비스는 UI스레드에서 실행되기 때문에 완전한 비동기 기술이 아니다. 이러한 단점은 Service 클래스를 확장한 IntentService를 통해 해결할 수 있다. 12.1 기본사항인텐트 서비스는 싱글 백그라운드 스레드에서 태스크를 실행한다.인텐트 서비스가 실행중이라면 큐에서 대기하고, 더이상 처리할 인텐트가 없을 때 생명주기가 끝난다. 인텐트 서비스는 활성화된 구성요소를 항상 포함하므로, 너무 일찍 태스크가 종료되는 문제를 막을 수 있다. 사용방법은 인텐트 서비스를 오버라이드 하고, 서비스 구성요소를 AndroidManifest.xml에 정의한다.
이번 장에서는 서비스를 통한 비동기 실행에 초점을 맞춘다. 비동기 실행자와 결합한 서비스는 백그라운드 태스크 실행을 위한 가장 강력한 도구이다. 11.1 비동기 실행을 위해 서비스를 사용해야 하는 이유 서비스 대신 일반 스레드를 이용하면 두 가지 위험이 있다. 구성요소 생명주기와 스레드 생명주기의 분리 스레드 생명주기는 안드로이드 구성요소 자바 객체 주기와 독립적이므로, 구성요소가 끝나더라도 계속 진행한다. 때문에 스레드가 종료될 때까지 자바 객체가 가비지 컬렉션이 되지 않는 메모리 릭이 발생할 수 있다. 호스팅 프로세스의 생명주기 런타임이 프로세스를 종료하면 프로세스의 모든 스레드가 종료된다. 이는 데이터가 유지되기도 전에 백그라운드 스레드가 중단되는 프로세스 종료의 위험을 증가시킨다.브로드케스트 리시..