안드로이드 앱 아키텍처의 특징인 컴포넌트 공부기록

안드로이드 앱의 특징을 생각하다가 컴포넌트에 대해서 공부하게 됐다.

 

|컴포넌트|

앱의 구성단위이며 안드로이드 앱은 여러 개의 컴포넌트의 조합이 된다.

 

안드로이드 컴포넌트의 종류

 

 

[1. 액티비티]

 

- UI를 구성하기 위한 컴포넌트로 사용자 화면을 제공

 

<특징>

 

1.  인텐트를 통해 다른 액티비티 호출

2. 2개 이상의 액티비티를 동시에 나타낼 수 없음

3. 1개 이상의 View 또는 ViewGroup을 포함

 

[2. 서비스]

 

- 메인 스레드에서 동작하면서 백그라운드에서 수행할 수 있는 기능

 

<특징>

 

1. 네트워크와 연동이 가능하며 별도의 UI를 가지지 않음

2, 애플리케이션이 종료 되어도 백그라운드에서 계속 동작

3. 액티비티와 함께 UI 스레드라는 애플리케이션 스레드로 실행

 

[3. 콘텐츠 프로바이더]

 

- 데이터 공유 목적으로 사용. 앱 들간의 데이터 전달 등 다른 앱의 데이터를 얻기 위함

 

<특징>

 

1. SQLite DB or Web or 파일 입출력 등을 통해 데이터 관리

2. 외부 앱이 현재 실행 중인 DB에 접근하지 못하도록 공유 능력 관리 

3. 작은 데이터는 인텐트로 관리하지만 큰 데이터는 콘텐츠 프로바이더로 관리

4. CRUD 원칙 이용 

 

[4. 브로드캐스트 리시버]

 

-  시스템 동작 시 갑자기 발생하는 이벤트에 대하여 상황에 대처하는 기능

 

<특징>

 

1. 안드로이드 OS로 부터 이벤트와 정보를 받아서 처리함

2. 대부분 따로 UI를 가지지 않음

3. 특정 상황을 제외하고 시스템에서 시작됨

 

간단하게 요약하면 액티비티는 사용자의 화면, 서비스는 백그라운드에서 실행되는 기능, 

브로드캐스트 리시버는 시스템 이벤트 처리기, 콘텐츠 프로바이더는 앱 데이터를 관리하는 기능을 한다.

 

그리고 이 컴포넌트 간에 메시지 전달은 인텐트(Intent)가 담당한다.

 

I인텐트|

컴포넌트 간에 주고받는 메시지이며, 데이터를 주고받기 위해서만 존재한다.

화면 전환이나 앱 사이의 데이터를 주고받는 경우에 사용한다.

 

 

 

안드로이드의 4대 컴포넌트에 대해서 알아봤다.

기업의 요구사항 중에서 컴포넌트를 분리할 수 있는지를 묻는 요구사항이 있었다.

 

액티비티와 서비스는 앱 개발을 하면서 당연히 사용해봤고,

다른 컴포넌트에 대해서도 사용해 본 것이 있는지  더 다양한 것을 공부해 두어야겠다.