Android/tip

안드로이드 애플리케이션 구조

너구리V 2012. 6. 12. 17:21

안드로이드의 핵심적인 특징은 하나의 애플리케이션이 다른 애플리케이션의 요소(또는 기능)를 사용할 수 있다는 것이다. 따라서 다른 애플리케이션에 이미 있는 기능은 가져다 쓸 수 있다. 더구나 그 애플리케이션과 코드를 섞을 필요없이 단순히 필요할 때 불러 쓰기만 하면 된다.

안드로이드는 다른 시스템과는 달리 애플리케이션에 main() 함수와 같은 시작점을 갖고 있지 않으며, 필요할 때면 언제든지 시스템이 인스턴스화해서 실행시킬 수 있는 4개의 컴포넌트로 구성되어 있다.


1. Activity

activity는 사용자가 사용할 수 있는 하나의 user interface를 지칭한다. 예를 들어, 문자전송 애플리케이션은 전화번호 목록을 조회하는 activity, 메시지 문구를 작성하는 activity, 받은 문자 내용을 보는 activity, 설정을 변경하는 activity 등을 가지고 있다. 각각의 activity는 다른 activity에 대하여 독립적이며, Activity base class의 subclass로서 구현된다.

애플리케이션을 구성하고 있는 여러 activity 중 하나는 애플리케이션이 시작될 때 사용자에게 보여지는 첫번째 activity로 지정된다. 이것을 시작점으로해서 다른 activity로 이동할 수 있다.

하나의 activity는 기본적으로 하나의 화면(window)을 갖지만, 그 화면은 스크린보다 클수도 작을수도 있고, 팝업창 등 여러개의 화면으로 구성될 수도 있다. 한 화면이 오픈되면 이전 화면은 멈추게 되며, history stack에 저장된다. 사용자는 history내에 있는 이전 화면으로 돌아갈 수 있다. history stack에 저장될 필요가 없는 화면은 삭제될 수 있다.

화면의 컨텐츠는 View base class에서 상속받은 객체들에 의해 표현된다. view 컨트롤들은 부모-자식 관계로 조직되며, 부모 view에서 자식 view의 layout을 설정한다. view 컨트롤에는 버튼, 텍스트, 이미지, 달력, 진행상태바, 체크박스, 라디오버튼 등이 있다. 

view의 계통구조는 Android Hierarchy Viewer에 의해 볼 수 있다. (Android SDK 폴더의 tools \ hierarchyviewer.bat 실행)


2. Service

안드로이드에서 service는 두 가지 의미가 있다. 하나는 배경음악과 같이 어떤 일정한 일을 activity의 배경에서 수행하는 배경 프로세스를 말한다. 다른 하나는, 어떤 remote object에 대한 fetch data와 같이 activity가 필요로 하는 결과물을 제공하는 interface이다. 이 두가지 서비스 객체는 모두 Service base class를 상속받는다.

Context.startService()를 이용하여 Service를 실행한다. Context.bindService() 메소드는 서비스에 연결하거나 아직 시작하지 않은 Service를 시작하는데 사용한다. Interface는 멈춤, 다시 재생 등과 같이 service에 사용자 접근이 가능하도록 해준다. activity와 같이 service도 애플리케이션의 시작점(main thread)으로 사용할 수 있다.


3. Broadcast receiver

broadcast receiver는 단지 broadcast된 이벤트를 받아들이고 반응하는 컴포넌트이다. broadcast는 주로 시스템에 의해 발생되지만 (배터리가 부족, 전화수신 등), 애플리케이션에 의해 발생될 수도 있다. 애플리케이션은 자신이 중요하다고 생각하는 다양한 이벤트에 반응하기 위해 여러개의 broadcast receiver를 가질 수 있다. 모든 broadcast receiver는 BroadcastReceiver base class를 상속한다.

broadcast receiver는 자신이 받은 정보에 반응하여 activity를 실행시키기도 하며, 또는 Notification Manager를 이용하여 사용자에게 알려주기도 한다.


4. Content provider

content provider는 애플리케이션의 데이터를 다른 애플리케이션과 공유할 수 있도록 해준다. 데이터는 SQLite 데이터베이스에 파일시스템으로 저장되거나 다른 방법으로 저장될 수 있다. 

content provider는 ContentProvider base class를 상속하며, 데이터를 저장하고 불러오는 적절한 메소드로 구현된다. 그러나 애플리케이션은 이 메소드를 직접 호출할 수 없으며, Content Resolver 객체를 사용한다.

반응형

'Android > tip' 카테고리의 다른 글

이클립스 에러  (1) 2012.07.24
Color Code표 검색하기  (0) 2012.07.24
Android 개발 환경 설정  (0) 2012.06.12
timerTask  (0) 2011.06.01
지오코딩  (0) 2011.05.25