앞서서 우리는 안드로이드드 구조 이해에 중요한 개념인 컴포넌트의 기본 원리를 살펴보았습니다. 이제 이 내용을 바탕으로, 안드로이 앱에서 찾아볼 수 있는 부가적인 특징들을 살펴보도록 하겠습니다.
2. 안드로이드 기본 구조의 이해 (2) - 컴포넌트(component) 1
안드로이드의 큰 특징이자, 안드로이드 아키텍처 이해에 있어서 중요한 컴포넌트(component)에 대해서 살펴보도록 하겠습니다. 1. 컴포넌트는 앱의 구성단위이다 컴포넌트는 안드로이드 앱을 구성
nozeroslope.tistory.com
○ 애플리케이션 진입 지점(main 함수 등)이 따로 없다
어떤 앱이 실행되기 위해서 최초로 실행되는 코드 부분 - 즉 main 함수 같은 부분 - 이 컴포넌트의 경우 존재하지 않습니다. JAVA의 경우, 해당 앱이나 프로그램이 실행되는 진입점이 바로 이 main 함수인데 컴포넌트는 이러한 구조를 따르지 않습니다.
이유는 간단히 설명하면 컴포넌트 클래스는 모두가 프로세스 구동 시 최초로 실행될 수 있는 요소이기 때문입니다. 간단한 예시 같지만, 선뜻 이해가 되지 않습니다. 어떤 메신저 앱이 있다고 가정하고 살펴보겠습니다. 그리고 이 메신저 앱에는 아래와 같이 크게 세 개의 컴포넌트가 있다고 가정합니다.
▷ 메시지 리스트
▷ 메시지 발송
▷ 메시지 수신
이 앱을 아이콘을 터치해서 실행하면, 기본적으로 '메시지 리스트'가 메인화면에 출력되는 상태입니다. 그럼, 우리는 일반적으로 앱의 프로세스가 최초로 실행되는 시점이 이렇게 앱을 직접 실행시킨 순간이며 - 동시에 '메시지 리스트' 컴포넌트가 main 함수 영역이라고 생각하게 됩니다.
하지만, 안드로이드 앱은 위와 같이 아이콘을 직접 터치해 실행하지 않더라도 실행되는 경우가 많습니다. 예를 들어 앱이 실행되지 않은 상태인데 누군가 메시지를 전송하면 우리가 직접 실행하지 않더라도 '메시지 수신' 컴포넌트가 실행되어 정해진 처리를 진행하게 됩니다. 너무나도 당연한 이야기죠?
즉, 우리의 예상과는 다르게 안드로이드 컴포넌트는 앱 내에서 각각 독립적인 단위로 수행될 수 있으며, 그래서 main 함수가 없다고 표현하는 것입니다.
○ 애플리케이션 라이브러리 개념이 있다
다소 어려운 개념인 것 처럼 느껴지지만, 예시는 의외로 쉽습니다. 메신저 앱에서 대화 중 [첨부 파일] 기능을 이용해 사진을 보내려고 합니다. 이때 사진 선택 버튼을 누르면, 자동으로 메신저 앱이 아닌 스마트폰의 '갤러리'가 실행됩니다. 즉, 메신저 앱의 특정 컴포넌트의 기능 중 하나가 '갤러리' 앱의 목록 화면을 띄운 다음 거기서 사용자가 선택한 사진을 메시지에 포함하는 기능이 있는 것입니다.
너무 당연한 기능이지만, "메신저 앱에서 갤러리 앱을 실행해 사진을 얻는 기능"은 위에서 언급한 컴포넌트의 특성 때문에 구현이 된 기능입니다.
(1) 사용자가 갤러리 앱을 직접 실행하지 않아도 갤러리 앱의 특정 컴포넌트를 실행할 수 있다.
(2) 두 클래스(메신저, 갤러리)가 서로 다른 클래스이지만 컴포넌트 기반이므로 독립적인 실행이 가능하다. (즉, 결합 구조라면 관련 없는 클래스이기 때문에 실행이 불가능함)
즉, 이런 이유로 안드로이드의 다른 앱들은 전부 '라이브러리'라고 생각할 수 있습니다. "본인이 구현하지 않은 앱의 기능을 내가 구현한 앱에서 사용할 수 있다면" 그것은 곧 라이브러리 개념이 적용되기 때문이죠.
정리하면 안드로이드 컴포넌트의 특징은 다음과 같습니다.
·안드로이드는 컴포넌트 기반의 개발을 진행한다.
·각 컴포넌트는 개발자 코드 간 결합이 발생하지 않는다.
·컴포넌트의 생명주기는 시스템이 관리하므로, 앱 수행 시점은 다양할 수 있다.
·애플리케이션 라이브러리 개념이 있다.
'Programming > Android' 카테고리의 다른 글
2. 안드로이드 기본 구조의 이해 (3) - 리소스 외부화, XML (1) | 2023.12.02 |
---|---|
2. 안드로이드 기본 구조의 이해 (2) - 컴포넌트(component) 3 (1) | 2023.11.28 |
2. 안드로이드 기본 구조의 이해 (2) - 컴포넌트(component) 1 (0) | 2023.11.15 |
2. 안드로이드 기본 구조의 이해 (1) - 안드로이드 아키텍쳐 (0) | 2023.11.12 |
1. 안드로이드 스튜디오 기본 환경 구축 (3) - 앱 배포 (0) | 2023.10.17 |