안드로이드 앱 개발을 위한 기본 개념들 요약 - 앱의 구성 

안드로이드 앱의 구성

보통의 안드로이드(모바일) 앱 등은 통상적으로 각 용도 별로 화면이 명확하게 구분된다. 이 때 코드에서 각 용도를 구분하는 목적으로 액티비티라는 개념이 사용된다. 액티비티는 창을 제공하며 여러 개의 레이아웃과 뷰를 포함할 수 있다.

 

앱은 액티비티 1개 이상으로 구성되어 있고 각각의 액티비티들은 독립적으로 실행되는 컴포넌트이다. 따라서 액티비티간 통신(데이터 전달)은 독립적으로 실행된 컴포넌트 간의 통신이며 안드로이드에서는 이 때 인텐트라는 것을 제공하여 컴포넌트끼리 사전에 약속된 방법으로 데이터를 전달할 수 있는 방법을 제공한다.

 

그리고 각각의 액티비티의 입출력 값이 일반적이라면, 이 액티비티를 포함한 원래의 앱 이외에 다른 앱에서도 일종의 함수와 비슷한 개념으로 사용할 수 있는 가능성이 높아진다.

 

구성 요소

시스템이나 사용자가 앱에 들어올 수 있는(앱을 실행할 수 있는) 진입점

 

구성 요소의 유형

안드로이드 앱 구성은 다음의 4가지 유형이 있다.

 

액티비티(Activity),

서비스(Service),

브로드캐스트 리시버(Broadcast Receiver),

콘텐츠 제공자(Content Provider)

 

Activities

Broadcast Receivers

Services

Content Providers

 

각 구성 요소의 개요

액티비티(Activities)

사용자와 상호 작용 하기 위한 진입점이다. 좀 더 쉽게 말하면, 사용자 인터페이스(다양한 텍스트 등의 표현, 텍스트 입력 영역, 버튼, 스위치 등의 컨트롤 등)를 포함한 화면 하나를 나타낸다.

 

서비스(Services)

백그라운드에서 앱을 실행하기 위한 다목적 진입점이다. 사용자 인터페이스는 제공하지 않는다.

ex. 백그라운드에서 데이터를 동기화 하거나 음악 등을 재생하는데 사용됨

 

브로드캐스트 리시버(Broadcast Receivers)

앱이 시스템 전체의 브로드캐스트 알림에 응답할 수 있게 한다.

ex. 타이머로 설정된 알림, 일정 알림, 기타 상태 표시줄의 각종 알림 등

 

콘텐츠 제공자(Content providers)

파일 시스템, 데이터베이스, 웹 또는 앱 등은 영구 저장 위치에 액세스 할 수 있다.

콘텐츠 제공자는 이런 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리한다.

ex. 연락처 데이터, 일정 데이터 등

 

 

각 구성 요소를 활성화(시작) 하는 방법

구성 요소 중 액티비티, 서비스, 브로드캐스트 리시버는 인텐트(Intent)라는 비동기식 메시지로 활성화/시작 된다.

인텐트는 Intent 객체로 생성되며, 명시적 인텐트암시적 인텐트가 있다.

 

특정 구성 요소를 활성화(시작) 할지를 나타내는 것을 명시적 인텐트라고 한다.

ex. 특정 액티비티를 바로 시작함

 

특정 유형의 구성 요소를 활성화 할지를 나타내는 것을 암시적 인텐트라고 한다.

ex. 데이터 URI 등을 다룰 수 있는 액티비티 유형을 사용자에게 보여주고 사용자가 선택한 액티비티를 실행

 

좀 더 구분해 보면 다음과 같다.

 

액티비티, 서비스

인텐트(Intent)에 작업을 수행할 데이터의 URI를 지정

인텐트에 실행할 Activity를 지정

 

브로드캐스트 리시버

인텐트에 단순히 브로드캐스트 될 알림을 지정

 

콘텐츠 제공자

콘텐츠 제공자는 인텐트(Intent)가 아니라, ContentResolver가 보낸 요청의 대상으로 지정되면 활성화 된다.

 

더 상세한 내용은 안드로이드 개발자 사이트에서 확인할 수 있다.

- https://developer.android.com/guide/components/fundamentals



액티비티/활동 수명 주기

위의 다이어그램은 안드로이드 개발자 사이트에 있는 것을 한글로 번역한 것이다.

 

더 상세한 내용은 안드로이드 개발자 사이트에서 확인할 수 있다.

https://developer.android.com/guide/components/activities/activity-lifecycle

 

 

+ Recent posts