이번 포스팅에서는 Android 앱의 기본 구조에 대해 알아보려고 한다. 안드로이드 앱은 컴포넌트들로 구성되어 있으며, 컴포넌트는 안드로이드 시스템에서 관리하기 때문에 서로 생성하거나 직접 접근할 수 없다는 특징이 있다.
안드로이드 앱 개발의 특징
안드로이드 앱에서 가장 중요한 구성 요소인 컴포넌트에 대해 알아보자. 컴포넌트가 무엇이고, 어떤 종류가 있으며 어떤 특징이 있는지 알아보려고 한다.
컴포넌트 (Component)
의미
- 애플리케이션의 구성 요소, 구성 단위
- 하나의 애플리케이션은 여러 컴포넌트로 구성됨
- 안드로이드에서도 컴포넌트의 기반을 두며, 클래스로 컴포넌트를 개발함
- → 하나의 컴포넌트 = 하나의 클래스
- but 모든 클래스가 컴포넌트가 되는 것은 아님
- 안드로이드 앱 = 컴포넌트 클래스 + 일반 클래스
- 컴포넌트 클래스
- 클래스의 객체 생명주기 관리를 안드로이드 시스템에서 함
- 시스템에서 컴포넌트 클래스를 특별하게 관리하여 특정한 기능을 수행하게 함
- 일반 클래스
- 클래스의 객체 생명주기 관리를 개발자 코드에서 함
- 개발자가 직접 객체를 생성한다는 것은 시스템의 컴포넌트 기능을 이용하지 않겠다는 것 ⇒ 일반 클래스로 이용하겠다는 것. 따라서 컴포넌트 클래스의 생명주기를 직접 관리하면 안 됨.
- 컴포넌트 클래스
종류
- 액티비티 Activity
- 화면을 구성하는 컴포넌트
- 앱이 실행되면 액티비티에서 출력한 내용이 폰에 나옴
- 서비스 Service
- 백그라운드 작업을 하는 컴포넌트
- 화면과 상관 없이 백그라운드에서 장시간 실행해야 할 업무 담당
- 콘텐츠 프로바이더 Content Provider
- 앱의 데이터를 공유하는 컴포넌트
- 앱 간에 데이터를 공유하도록 해줌
- ex) 카톡 앱에서 프로필을 변경할 때 갤러리 앱의 사진을 이용
- 브로드캐스트 리시버 Broadcast Receiver
- 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
- ex) 부팅 완료, 배터리 방전 등의 시스템에서 발생하는 이벤트
- 개발자가 컴포넌트를 만들 때 지정된 클래스를 상속받아야 함
- Activiry, Service, ContentProvider, BroadcastReceiver
- 컴포넌트는 개발자가 만들고자 하는 앱의 기능과 화면 등을 고려해서 필요한 만큼 구성
특징
- 컴포넌트는 앱 안에서 독립된 실행 단위임
- 컴포넌트끼리 서로 독립적. 서로가 서로를 호출하거나 할 수 없음.
- → 코드 결합이 발생하지 않음
- A에서 B 객체를 생성할 수 없음! (클래스 결합 X)
- → A가 안드로이드 시스템에 요청해서 B 액티비티를 실행해야 함
- 앱 실행 시점이 다양함
- 항상 같은 액티비티가 실행되는 것이 아님
- 상황에 따라 다른 액티비티가 실행될 수 있음
- 컴포넌트가 서로 독립적이기 때문에 가능
- ⇒ 안드로이드 앱에는 main function(단일 시작점)이 없음
- 애플리케이션 라이브러리 사용 가능
- 다른 애플리케이션을 라이브러리처럼 이용할 수 있음
- ex) 카톡 채팅 화면에서 카메라앱을 통해 사진을 찍고 사진을 받아와서 전송할 수 있음
- → 카톡 앱이 카메라 앱을 라이브러리처럼 사용
리소스 (Resource)
안드로이드 앱 개발 시에는 리소스를 많이 활용함
리소스
- 코드에서 정적인 값을 분리한 것
- ex) 문자열, 색상, 크기, 이미지
- 대부분 xml 파일로 작성
- 코드가 짧아져서 개발 생산성과 유지보수성이 좋아짐
위 포스팅은 아래 교재를 통해 학습한 내용을 기반으로 작성되었습니다.
↓ ↓ ↓ <Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린> 보러가기 ↓ ↓ ↓
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
'기타 > Android' 카테고리의 다른 글
[Android] 안드로이드 앱 구성 파일을 파헤쳐보자 (build.gradle, AndroidManifest.xml, res 폴더) (3) | 2024.09.13 |
---|
댓글