액티비티는 사용자와 상호작용하기 위한 진입점이다.
유저 인터페이스를 가진 하나의 화면을 나타낸다.
액티비티는 서로 독립적이다.
따라서 특정 앱의 여러 액티비티 중 하나를 해당 앱에서 허용한다면, 다른 앱에서 실행시킬 수 있다.
Activity
클래스를 상속받아서 만들어진다.서비스는 백그라운드에서 앱을 계속해서 실행시키기 위한 앱의 다목적 진입점
역할: 서비스는 백그라운드에서 실행되는 구성요소로, 오래 실행되는 작업을 수행하거나 원격 프로세스를 위한 작업을 수행한다.
서비스 구현 방법: 서비스는 Service
클래스를 상속받아서 만든다.
참고할 점: 만약 만들려는 앱이 API 레벨 21(Android 5.0)이상을 타겟으로 한다면, JobScehduler
를 상요해서 작업을 예약하는 것이 좋다.
JobScheduler
는 작업 일정을 최적으로 조정하여 전력 소모량을 줄이고, Doze API와 함께 동작하여 배터리를 절약해주는 장점이 있다.
브로드캐스트 리시버는 시스템이 앱에게 이벤트를 전달할 수 있도록 하고, 앱으로 하여금 시스템 전역 브로드 캐스트 알림에 응답할 수 있도록 한다.
브로드캐스트 리시버는 앱으로 들어갈 수 있는 있는 진입점이기 때문에, 현재 실행되지 않은 앱에도 브로드 캐스트를 전달할 수 있다.
예를 들어서 앱이 사용자에게 예정된 일정을 알려주기 위한 알람을 예약할 경우,
알람이 울릴 때까지 앱을 실행시켜둘 필요 없이, 알람을 해당 앱의 브로드 캐스트리시버에게 전달하기만 하면 된다.
대다수의 브로드 캐스트는 시스템에서 발생한다.
예를 들어서, 배터리가 부족하거나 사진을 캡쳐했다는 브로드 캐스트가 대표적이다.
앱도 브로드 캐스트를 만들 수 있다.
예를 들어서, 다른 앱에게 기기에 데이터가 다운되었고, 그 데이터를 사용할 수 있도록 하기 위해 브로드 캐스트를 만들 수 있다.
브로드캐스트 리시버는 UI를 표시하지 않지만, 하지만 브로드캐스트 알림이 왔다는 것을 사용자에게 알리기 위해 상태바 알림을 만들 수 있다.
하지만 일반적으로 브로드캐스트 리시버는 다른 구성요소로 가는 문인 경우가 많고,
아주 적은 양의 작업을 수행하도록 많들어진 경우가 많다.
예를 들어서 JobScheduler
의 이벤트를 기반으로 어떤 작업을 수행하도록 JobService
를 예약할 수 있다.
BroadCastReciever
의 자식 클래스로 구현된다.Intent
로서 전달된다.콘텐츠 프로바이더는 파일 시스템, SQLite Database, 웹, 혹은 앱에서 접근할 수 있는 모든 영구 저장소에 저장할 수 있는 앱 데이터의 공유 집합을 관리한다.
다른 앱은 콘텐츠 프로바이더를 통해서 데이터를 얻어오거나, 콘텐츠 프로바이더가 허용할 경우에는 데이터를 수정할 수 있다.
예를 들어서 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 콘텐츠 프로바이더를 제공한다.
URI를 할당하는데 앱을 계속 시켜둘 필요가 없다.
따라서 URI를 소유한 앱이 종료된 이후에도 URI는 계속 살아있을 수 있다.
시스템은 URI를 통해서 데이터를 불러올 때만, 해당 URI를 소유한 앱이 실행되도록 하면 된다.
URI는 중요하고 세분화된 보안모델을 제공한다.
예를 들어서 앱은 클립보드에 있는 이미지에 URI를 할당할 수 있지만, 콘텐츠 프로바이더가 이 URI를 잠금 상태로 만들어서,
다른 앱이 해당 이미지를 접근하지 못하도록 만들 수 있다.
만약 두번재 앱이 클립보드에서 해당 URI에 접근하려고 할 때, 시스템은 임시적인 URI 사용권한을 부여하여, 그 앱이 해당 데이터를 접근하도록 할 수 있다.
하지만 해당 URI의 데이터 외에는 접근할 수 없다.
콘텐츠 프로바이더는 특정 앱에서만 사용하고 공유하지 않을 데이터를 접근할 때도 유용하다.
ContentsProvider
의 자식 클래스로 구현된다.