본문 바로가기

안드로이드앱 코딩_AndroidApp/안스_코틀린_쪼개기

파편15_component_컴퍼넌트

안드로이드 앱 개뱔은 component(컴퍼넌트 ; 요소, 부품)를 기반으로 한다.

component는 앱을 구성하는 단위를 나타내는 개념이다.

그러므로 앱은 개별 component의 조합이라고 할 수 있다.

코딩을 작성하는 체계 중 하나인 '객체 지향 프로그래밍'과 비슷하다.

 

component 개념이 코드로 구현된 것이 Class(클래스)다.

하지만 모든 클래스가 컴퍼넌트는 아니다.

왜냐하면 클래스는 컴퍼넌트클래스와 일반 클래스로 나누어지기 때문이다.

 

컴퍼넌트는 안드로이드 시스템이 주도하여 생명주기(lifecycle)를 관리하고 소멸시킨다.

 

컴퍼넌트도 클래스 이므로 다른 클래스와 조합할 수 있다.

특별히 컴퍼넌트 클래스는 독립적인 수행 단위로 동작한다.

컴퍼넌트클래스를 실행하려면 직접 결합(호출)하지 않고 Intent(인텐트)를 매개로 시스템에게 실행을 요청 한다.

이것을 Loose Coupling(느슨한 결합)으로 연결되어 있다고 부른다.

 

이런 구조는 '코틀린 더파기'에서 인텔리제이로 코틀린 코딩할 때 처럼 main함수 같은 진입점이 따로 없다.

사용자가 아이콘을 누르지 않아도  SMS 수신이 발생했을 때 앱이 실행되는 것이 예다.

이것이 가능한 이유는 컴퍼넌트는 안드로이드 시스템이 주관하는 독립적 수행 단위이기 때문이다.

 

애플리케이션 라이브러리 개념

앱을 개발할 때 보통은 표준라이브러리 또는 외부 라이브러리를 불어와서 만든다.

라이브러리(library)는 기능별, 용도별로 이미 만들어져 있는 자원의 묶음이다.

그런데 만들어진 어떤 앱을 내가 만든 앱에서 불러와서 실행할 수 있다면 불러오는 앱은 라이브러리의 개념과 같다는 것이 앱 라이브러리라는 개념이다.

예를 들면 SMS앱에서 갤러리앱을 실행할 수 있는 것은 안드로이드가 컴퍼넌트 기반이기 때문이다.

즉, 외부 앱과 연동이 가능하기 때문에 직접 만들지 않아도 라이브러리 처럼 활용하는 것이다.

 

컴퍼넌트의 종류

  • Activity(액티비티) : UI(사용자 인터페이스) 구성을 위한 컴퍼넌트
  • Service(서비스): UI없이 백그라운드에서 장시간 수행되는 컴퍼넌트(서버와 계속 연결 상태 유지)
  • ContentProvider(컨텐트 프로바이더) : 폰 안의 앱 간 데이터 공유를 위한 컴퍼넌트(다른 앱과 공유 목적)
  • BroadcastReceiver(브로드캐스트 리시버) : 이벤트 모델로 수행되는 컴퍼넌트(이벤트 발생시 받기 위한 수단)

 

앱은 위 4가지 컴퍼넌트 클래스를 조합해서 만드는 것과 같다.

개발하는 목적에 맞는 컴퍼넌트를 적절하게 조합하여 효율적이고 최적화된 앱을 만드는 것이 목표다.

 

 

 

 

Wraven...