안드로이드

안드로이드 컴포넌트

별보는 개발자 2022. 8. 6. 22:36

안드로이드 개발을 하기 위해서는 이 컴포넌트에 대해서 필연적으로 공부해야 한다.

모든 내용을 다 공부하기는 어렵지만

안드로이드 개발에 꼭 필요하고, 꼭 알아야 하는 부분만 정리해보았다.

 

안드로이드 앱 아키텍처의 가장 큰 특징은 컴포넌트 기반이라는 것이다.

그렇다면 컴포넌트는 무엇이고, 어떤 종류가 있고, 어떤 역할을 수행하는지 알아보겠다.

 

컴포넌트란 구성요소란 뜻을 갖고 있다.

즉, 안드로이드 4대 컴포넌트는 안드로이드 앱을 구성하는데 필요한 4개의 요소를 말한다.

 

안드로이드 컴포넌트의 특징

  •  각 컴포넌트들은 하나의 독립적인 형태로 존재한다.
  • .각 컴포넌트들은 고유의 기능을 수행한다.
  • 각 컴포넌트들은 인텐트(Intent)를 통해 서로 상호작용한다.

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

  • 액티비티 : 화면에 보이는 UI를 구성하기 위한 컴포넌트
  • 서비스 : UI 없이 백그라운드에서 장시간 수행되는 컴포넌트
  • 콘텐츠 프로바이더 : 애플리케이션 간에 데이터를 주고받기 위한 컴포넌트
  • 브로드캐스트 리시버 : 이벤트 모델로 수행되는 컴포넌트

1. 액티비티(Activity) : 사용자 화면(UI)을 제공하는 컴포넌트

액티비티는 사용자 화면을 제공하는 컴포넌트이고 안드로이그 개발을 하면서 가장 많이 작성하는 컴포넌트이다.

즉, 애플리케이션과 사용자의 상호작용을 담당하는 인터페이스라고 할 수 있습니다.

  • 안드로이드 애클리이케이션은 하나 이상의 액티비티를 포함한다.
  • 인텐트(Intent)를 통해 다른 액티비티 및 컴포넌트를 호출할 수 있다.
  • 인텐트를 이용해서 다른 앱의 액티비티를 불러올 수 있다.
  • 생명주기(Life Cycle) 관련 메서드들을 재정의해서 필요할 때 구현할 수 있다.
  • 액티비티 내에 Fragment를 이용해서 화면을 분할할 수 있다.
  • 액티비티 이동시에는 플래그를 주거나 이전 액티비티를 종료하지 않을 경우, 스택 구조로 쌓이게 된다.

2. 서비스(Service) : 화면에 상관없이 백그라운드에서 무엇인가를 수행하는 컴포넌트

서비스는 눈에 보이는 화면과는 상관없이, 사용자에게는 보이지 않지만 백그라운드에서 장시간 어떤 특정 작업을 수행할 때 사용하는 컴포넌트이다.

즉, 사용자와 직접적으로 상호작용하는 컴포넌트는 아니다.

예를 들면 멜론, 지니 등의 음악 스트리밍 앱을 사용해서 음악을 들으면서 카톡으로 친구와 메세지를 주고받거나 파일을 다운받거나 할 때 주로 사용하게 된다.

  • 서비스는 메인스레드에서 동작한다.
  • 네트워크와 연동이 가능하다
  • 별도의 UI를 가지지 않고 백그라운드에서 수행된다.
  • 애플리케이션이 종료되어도 이미 시작이 된 서비스는 백그라운드에서 계속 동작한다.(음악 앱을 꺼도 음악재생은 된다.)

3. 콘텐츠 프로바이더(Content Provider) : 다른 앱과의 데이터 공유를 목적으로 사용하는 컴포넌트

안드로이드 스마트폰에는 여러 앱이 있고 그 앱들 간의 데이터를 공유하기 위해 사용한다.

예를 들어 개발자가 만든 앱에서 다른 앱의 데이터가 필요하다면 다른 앱의 데이터를 얻어야하는데

이 때 사용되는 컴포넌트가 콘텐츠 프로바이더이다.

대표적으로 페이스북이나 인스타그램을 이용하면서 핸드폰내에 있는 갤러리앱에 접근해서 사진을 가져오는 것이 있다.

특정한 애플리케이션이 사용하고 있는 데이터베이스(DB)를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공한다.

  • SQLite DB / Web / 파일 입출력 등을 통해서 데이터를 관리한다.
  • 데이터베이스에서 흔히 사용되는 CURD(Create, Read, Update, Delete) 원칙을 준수한다.
  • 프로바이더는 데이터의 Read(읽기), Write(쓰기)에 대한 퍼미션이 있어야 애플리케이션에 접근이 가능함.
  • 콘텐츠 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합하다.
  • 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와준다.

4. 브로드캐스트 리시버(BroadCast Receiver) : 안드로이드 OS로부터 발생하는 이벤트, 정보를 받기위해 사용되는 컴포넌트

브로드캐스트 리시버는 시스템에서 배터리가 부족하거나 시스템 부팅이 완료, 네트워크 끊김, 문자 메세지 수신 등등

특수한 이벤트에 대한 정보를 받아서 처리를 해야할 필요가 있을 때 사용을 한다.

예를 들면, 안드로이드 OS에서 메신저앱 또는 문자 메세지가 오면 앱에 "메세지가 왔습니다." 라는 정보를 방송(BroadCast)을 한다.

이 방송을 수신하기 위해 브로드캐스트 리시버를 구현하게 되고 특정 이벤트를 처리할 수 있다.

  • 대부분 UI를 가지지 않는다.
  • 특정한 상황을 제외하고는 시스템에서 시작한다.
  • 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용한다.