[Android] 안드로이드 앱의 핵심요소 구성 및 정리

반응형

안드로이드 앱은 다양한 요소가 결합되어 만들어집니다. 그중에 UI에 관련된 액티비티, 프래그먼트 등이 있고 인텐트와 액티비티를 이용해 독립적으로 실행 가능한 모듈을 생성해 재사용성을 높일 수 있다. 또한 콘텐츠 제공자를 구현해 앱 간 데이터 공유도 가능하다. 서비스와 브로드캐스트 수신자를 통해서 백그라운드 작업을 할 수 있으며 매니페스트 파일을 통해서 앱 구성을 정의할 수 있고 앱 리소스와 매니페스트 설정을 통해서 앱 컨텍스트를 만들어 낼 수 있다.

 

안드로이드 액티비티

안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 반드시 결합되어 생성됩니다. 액티비티란 안드로이드 앱을 구성하는 기본 단위이며 앱의 기능을 갖는 단일의 독립 실행 모듈입니다. 액티비티는 안드로이드 Activity 클래스의 서브 클래스로 생성되며 앱의 다른 액티비티와는 완전히 독립적이며 다른 액티비티의 함수를 직접 호출할 수도 없고 데이터도 직접 접근할 수 없습니다. 때문에 인텐트나, 콘텐츠 제공자를 통해서 공유가 가능합니다.

Android Activity

 

안드로이드 프래그먼트

프래그먼트는 안드로이드 Fragment 클래스의 서브 클래스로 구현하며 이름에서 알 수 있듯이 다수의 UI를 구성하는 데 사용된다. 액티비티와는 다르게 독립적인 모듈이 아니며 한 화면이 아닌 여러 개의 UI를 구성할 수 있습니다. 액티비티의 단점을 보완하여 UI를 구성할 수 있어서 많이 사용된다.

Android Fragment

 

 

안드로이드 인텐트

인텐트는 액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더 등을 실행하기 위해 존재하며 메시지를 통해 이를 동작하게 합니다. 대표적으로 액티비티 간의 화면 전환을 예로 들 수 있으며 화면 전환뿐만 아니라 액티비티 간의 데이터 전달에도 사용됩니다. 액티비티 간에 String, Int와 같은 값은 물론 배열, 리스트, 클래스 형태도 전달이 가능합니다.

Android Intent

 

 

브로드캐스트 인텐트

브로드캐스트 인텐트는 장치의 범용적인 이벤트를 사용하기 위해서 만들어진 또 다른 타입의 인텐트로 브로드캐스트 수신자로 수신하고 있는 모든 앱에 전송되는 시스템 차원의 인텐트입니다. 장치의 부팅이나 충전기 연결 등의 안드로이드 장치의 상태를 알려주기 위해 제공됩니다. 브로드캐스트 인텐트는 일반과 순차가 있으며 일반은 모든 수신자에게 비동기로 동시에 전달되며 순차의 경우 한 번에 하나의 브로드캐스트 수신자에게 전달됩니다.

Android Broadcast Intent

 

 

브로드캐스트 수신자

브로드캐스트 수신자는 브로드캐스트 인텐트를 수신할 수 있는 구독자라고 생각하면 좋습니다. 인텐트 필터를 통해서 구성하며 브로드캐스트 수신자는 백그라운드로 실행되며 서비스와 같이 별도의 인터페이스를 가지고 있지 않습니다.

 

Android Broadcast Receiver

 

안드로이드 서비스

안드로이드 서비스란 백그라운드에서 실행되는 프로세스입니다. 액티비티와 달리 UI 인터페이스를 가지고 있지 않으며 액티비티나 브로드캐스트 수신자 또는 다른 서비스로부터 관리됩니다. 만약 UI 작업이 필요 없이 작업을 수행해야 한다면 안드로이드 서비스를 통해서 작업하는 것이 이상적입니다. 인텐트 요청도 가능하며, UI를 사용하지 않더라도 토스트나 알림으로 사용자에게 알림을 줄 수 있습니다.

Android Service

 

콘텐트 제공자

Content Provider는 앱끼리 공유할 수 있도록 앱 간 인터페이스가 제공된다. 데이터의 사용은 콘텐츠 제공자가 정의한 URI를 통해서 제공된다. 데이터뿐만 아니라 파일 또는 SQLite와 같은 데이터 베이스 형태로도 제공이 가능하다. 안드로이드 시스템 내에서 제공되는 연락처, 미디어와 같은 것들도 이 콘텐츠 제공자를 통해서 공유되며 시스템에서 현재 사용 가능한 콘텐츠 제공자는 콘텐츠 리졸버를 통해서 찾을 수 있다.

 

Android Content Provider

 

매니페스트(Manifest) 파일

XML 파일로 되어 있으며, 앱을 구성하는 액티비티, 서비스, 브로드캐스트 수신자, 데이터 제공자, 퍼미션 등의 여러 다양한 요소들을 정의하고 하나로 연결해주는 역할을 하는 것이 안드로이드 Manifest 파일입니다.

AndroidManifest.xml

앱 리소스

안드로이드 앱 패키지 파일 (APK)은 다양한 구성요소로 이루어져 있습니다. APK는 자바 실행 코드 (dex 파일), 매니페스트 파일의 각종 메타 데이터 및 여러 리소스 파일이 포함됩니다. UI에 정의된 다양한 이미지와 문자열, 폰트, 색상 등을 정의해 놓은 파일이며 프로젝트 app/src/main/res 폴더에 정의되어 있습니다. 다른 프로그래밍 언어와 다르게 문자열이나 폰트, 색상까지도 저장해놓기 때문에 재사용성에 좋습니다.

 

앱 컨텍스트 (App Context)

앱 컨텍스트란 앱 리소스와 매니페스트 파일이 결합되어 생성되는 컨텍스트 객체입니다. 안드로이드의 Context 클래스의 구현체이며 앱을 구현하는 데 있어서 런타임 시 정보를 수집하고 앱 환경의 변경을 위해 다양하게 사용됩니다.

 

반응형

댓글

Designed by JB FACTORY