안드로이드 어플리케이션은 Activity, Service, Broadcast Receiver, Content Provider 로 구성되어 있습니다. 이 컴포넌트들은 독립된 형태로 존재하며 intent 를 통해 상호작용 합니다.
액티비티는 UI를 담당하는 컴포넌트입니다. 즉, 사용자에게 보여지는 화면입니다. 어플리케이션은 반드시 1개 이상의 액티비티를 가지고 있어야 합니다.
서비스는 백그라운드에서 실행되는 컴포넌트입니다. 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업을 수행합니다. 메인 쓰레드에서 실행되므로 서비스에서 별도의 스레드를 생성해서 작업을 처리해야 합니다.
브로드캐스트 리시버는 안드로이드 OS로부터 발생하는 이벤트와 정보(BroadCast) 를 핸들링하는 컴포넌트입니다. 브로드캐스트에는 시스템 부팅 완료, 배터리 부족, 언어설정 변경, 문자메세지 수신 등이 있습니다. 10초 이내의 작업만 보증하므로 오랜 시간 동작해야한다면 별도의 쓰레드나 서비스로 처리해야 합니다.
Broadcast Receiver 를 등록하는 방법에는 2가지가 있습니다. AndroidManifest 에 등록하는 정적 등록과 코드상에서 등록하는 동적 등록이 있습니다.
컨텐트 프로바이더는 애플리케이션 사이에서 각 데이터들을 공유할 수 있도록 하는 구성요소입니다. 안드로이드는 기본적으로 주소록, 이미지, 오디오 등 주요 데이터에 대한 내장 Content Provider를 제공합니다.
위의 그림처럼 외부 어플리케이션에서 local DB 의 데이터가 필요한 경우, 외부 어플리케이션은 Content Resolver 를 통해 Uri 를 어플리케이션에 보내고, 해당 어플리케이션의 Content Provider 가 Uri 를 해석하여 필요한 DB 작업을 합니다.
컨텐트 프로바이더는 기본적인 CRUD(Create, Read, Update, Delete) 연산이 가능합니다.
Android Developers[애플리케이션 기본 항목]
https://salix97.tistory.com/11