안드로이드 구성 요소
안드로이드는 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Reciver), 콘텐츠 제공자(Content Provider)로 구성되어 있다. 이런 구성 요소들은 서비스나 유저가 앱을 사용할 수 있는 '진입점'이다. 즉, 유저나 시스템이 앱에 접근하기 위해서는 4가지 구성 요소를 사용해야 한다는 의미이다. 안드로이드의 4가지 구성 요소들은 각각 다른 목적과 라이프사이클을 가지고 있으며 이번 글에서는 안드로이드의 4가지 구성 요소에 대해 간단하게 소개한다.
액티비티(Activity)
액티비티는 사용자와 상호작용을 하기 위한 진입점이다. 액티비티는 유저 인터페이스(UI)를 포함한 하나의 화면을 가지고 있으며, 사용자와 시스템의 상호작용을 도와준다. 예를 들어 이메일 앱이 있다고 생각해보자. 이메일 앱에서는 이메일 리스트를 보여주는 액티비티, 이메일을 작성하는 액티비티, 이메일 내용을 확인하는 액티비티가 있다. 이렇게 액티비티는 하나의 앱 안에서 각자의 역할을 하지만 각 액티비티들은 독립되어있다. 각 액티비티가 독립되어 있기 때문에 다른 서비스에서 하나의 액티비티에 접근하여 실행할 수 있다.
서비스(Service)
서비스는 백그라운드에서 앱을 계속 실행하기 위해 사용되는 진입점이다. 서비스는 유저인터페이스를 지원하지 않고, 백그라운드에서 음악을 계속 재생하거나 네트워크 작업 등 UI와 별도로 작동한다. 또한 다른 구성요소(액티비티 등)가 서비스를 바인딩하여 실행되도록 하거나 서비스와 계속 상호작용하도록 할 수 있다. 따라서 사용자가 앱을 종료해도 노래를 계속 재생할 수 있도록 하거나, 프로세스를 관리하는데 서비스를 사용한다. 라이브 배경화면, 알림 리스너, 화면 보호기, 입력 메서드, 접근성 서비스 및 여러 가지 기타 핵심 서비스 기능들은 모두 시스템에서 애플리케이션을 실행할 때 서비스로 바인딩하여 실행된다.
브로드캐스트 리시버(Broadcast recivers)
브로드캐스트 리시버는 시스템이 특정 행위의 알림을 받고 앱에 이벤트를 전달해주는 역할을 한다. 브로드캐스트 리시버 역시 진입점 중 하나이며, 앱이 실행 중이지 않을 때에도 브로드캐스트 리시버를 통해 알림을 줄 수 있다. 브로드캐스트 리시버는 UI를 가지고 있지 않지만 상태 표시줄 알림을 통해 사용자에게 알림을 줄 수 있다. 브로드캐스트는 시스템과 앱에서 발생한다. 배터리가 부족하여 배터리 부족 알림을 주거나 캡처를 알리는 화면 등이 시스템에서 발생한 브로드캐스트이며, 앱에서 파일 다운로드가 완료되면 사용자에게 알려주는 경우는 앱에서 발생한 브로드캐스트이다.
컨텐트 프로바이더(Content providers)
컨텐트 프로바이더는 앱 내 데이터를 다른 앱과 공유할 수 있도록 통로 역할을 한다. 안드로이드에서는 앱마다 데이터베이스를 가질 수 있다. 앱마다 가지고 있는 데이터베이스에 아무나 접근할 수 있도록 한다면 보안에 취약해진다. 그렇다고 다른 앱과 데이터를 공유하지 않는다면 그것 또한 문제가 된다. 따라서 컨턴트 프로바이더를 거쳐 데이터를 교환한다. URI(Uniform Resource Identifier)를 사용하여 데이터에 접근할 수 있다.
Reference
https://developer.android.com/guide/components/fundamentals