1. 스마트폰 플랫폼 특징과 안드로이드


스마트폰은 데스크톱과 비교해 물리적으로는 다음과 같은 차점이 있을 수 있다.

  • 한정된 운영시간: Battery 기반 전원 공급
  • 낮은 HW사양: 느린 CPU, 용량이 작은 Memory 등
  • 작은 Display: 현재 출시된 스마트폰의 최대 화면크기는 약3.7 인치 정도.
  • 부정확하거나 불편한 Input Method: 가상 키보드, 작은 qwerty키보드, 트랙볼 등
  • 불안정한 네트워크 환경: 모바일 디바이스이기 때문에 사용자의 위치에 따라 네트워크 환경이 수시로 변함

 


또, 스마트폰 상의 어플리케이션은 다음과 같은 사항을 고려하여 개발 하여야 한다.

  • 짧은 응답시간: 어플리케이션은 기기 본 목적(전화, 문자 등 통신)을 방해 하지 않음.
  • 안정성 확보: 어플리케이션이 모바일 디바이스 운영의 안전성을 저하 하지 않음.
  • 간결한 네트웍크 통신 구조: 스마트폰의 특성상 통신 비용이 비쌈으로 최대한 low-burst한 통신 지향 함.
  • 효율적 전원 사용: 불필요한 전원 소모를 최대한 배제. (효과적인 알고리즘/로직의 구현 등)

 


이와 같이 데스크톱과 스마트폰 플렛폼은 많은 차이 점이 있음으로 데스크톱 플렛폼에서 작업하던 개발자는 특별히 신경을 써서 지금까지와는 조금 다른 관점에서 접근하여 어플리케이션을 개발 할 필요가 있다.

 


안드로이드는 이런 열악한(데스크탑 보다) 환경에서도 개발자에게는 최대한 편리한 개발 framework를 사용자에게는 최대한의 편리성과 안정성을 재공한다.

  • Linux kernel 사용: 안정성이 검증된 Linux kernel 2.6 기반
  • Dalvik VM: 어플리케이션마다 고유의 VM을 할당받도록 다중VM 환경을 효과적으로 구현. 안정성/ 보안성 등 향상
  • 잘 만들어진 개발 툴 & API 라이브러리: SDK의 지속적인 update (현재 2.1이 최신)
  • Java 사용: 널리 쓰이는 Java를 개발 언어로 채택
  • 안정된 통합 개발 환경(IDE) 제공: Eclipse IDE & Android Development Toolkit (ADT) plugin 등
  • 어플리케이션간 최소한의 간섭: 안정성과 보안성 향상

 

 

 



 

2. 안드로이드 어플리케이션 구성요소 (Android app components)


컴포넌트 재사용을 위한 디자인

안드로이드 어플케이션에서 특이한 점은 한 어플리케이션의 전부 또는 일부가 다른 어플리케이션의 부품이 될 수 있다는 것이다. 예를 들어 어플리케이션 A에 전화번호부가 구현되어 있고 어플리케이션 B에 또 다시 같은 기능의 전화번호부를 구현해야 한다면, 어플리케이션 B는 런타임에 기존에 만들어진 A를 구동하고 그중 필요한 객체(이 경우는 전화번호부)만을  인스턴스화 하여 B에서 사용하게 된다.

이런 작동이 가능하기 위해서는, 시스템이 특정 어플리케이션의 일부가 필요할 때 어플리케이션을 구동하고 필요한 부분을 자바 오프젝트로 인스턴스화 할 수 있어야 한다. 이런 이유로 안드로이드 어플리케이션에는 진입점 (main함수 같은)이 존재 하지 않는 대신 시스템이 필요시 자유롭게 구동할 수 있는 핵심 구성요소(컴포넌트)들로 구성된다.

다음은 안드로이드 어플리케이션의 핵심 구성요소(컴포넌트) 이다.

 

  • Activity: Activity는 사용자가 수행하려는 하나의 특정 작업에 대한 visual user interface를 제공한다. 예를 들자면 이메일 어플리케이션에서 인커밍 메일을 확인하는 Activity, 메일쓰고 전송한는 Activity 등이다. 즉 사용자가 하려는 하나의 작업을 하나의 단위로 구분하고 그에대한 UI를 재공하는 것이 Activity이다.
  •  

    어플리케이션의 기능에 따라 1~n개의 Activity로 구성할 수 있으며, 작업 단위가 구분 요소 이기 때문에 필요에 따라 하나의 Activity가 여러 윈도우로 구성 될 수도 있다. (메일작성 하는 window에서 형식이 잘못된 주소를 경고하는 dialog windows팝업: 두 window모두 이메일작성 이라는 하나의 작업을 수행하기 위해 사용된다)

     

    Activity의 visual UI는 view(Android.view.View에서 파생되는)의 계층적 집합이며(트리구조를 생각하세요) 부모 view는 자기 자신 내부에서의 child view(들)의 위치를 지정한다. 각 view는 고유의 사각 영역(widget cell)을 할당 받으며 계층의 leaf view(단말 노드)는 사용자와 직접 상호작용을 하는 view(버튼, 텍스트 박스, 이미지 등등)들로 구성된다.

     

    일반적으로는 visual user interface 형태로 사용자가 눈으로 확인 할 수 있지만 라이프 사이클이나 목적에 따라서 백그라운드에서 돌아갈 수도 있음. 하지만 사용자 모르게 백그라운드에서 돌아가는 기능의 경우 일반적으로 Contents Provider나 Service를 사용 한다.



  • Contents provider: 다른 어플리케이션에서 사용될 data를 생산 하는데 사용함. 공유할 data는 파일시스템, SQLite등 사용가능한 모든 저장 장치에 생성할 수 있음.


  • Broadcast receiver: Broadcast를 받고 그에 반응하는 일을 함. 많은 Broadcast가 보통 시스템에 의해 발행하며, 발생 예로는 Time-zone의 변경 됐을때, batter가 낮을때, 폰카로 사진을 찍었을때, 지원 언어를 바꿨을때 등이 있다. 사용자 어플리케이션도 broadcast를 발생할 수 있다. (ex. 어플리케이션이 특정 data를 다운로드 완료하고 다른 어플리케이션들이 자료를 사용할 수 있도록 broadcast를 발생)
  • 어플리케이션은 자신에게 중요한 모든 broadcast를 처리할 수 있도록 필요한 수 만큼의 Broadcast receiver 객체 가질 수 있으며, broadcast 객체는 BroadcastReceiver클래스를 상속해 구현한다.



  • Service: 일반적으로 visual user interface를 제공 하지 않으며, backgroud에서 실행된다. 구현 예를 들면 meida player같은 경우인데 사용자와 상호 작용(play, stop, ff 등등)하는 조작 부는 Activity로 구현 하지만 실제로 음악을 paly하는 부분은 Service를 이용해 구현해야 한다. 왜냐하면 activity는 한번에 하나만 화면에 표시/작동 함으로 음악을 play하는 부분이 activity에 구현되어 있다면 사용자가 다른 activity(ex. 웹브라우져)를 불러왔을때 음악 재생이 멈춰버리기 때문이다. 반면 음악제생 부가 service를 이용해 구현되어 있다면 조작 activity가 다른 액티비티 구동에 의해 화면에서 사라지더라도 service는 계속 실행된다.

 




컴포넌트 활성화 하기 (Activating Component: intents)

인텐트(intent)의 사전적의미는 의사, 의향, 의도 정도이다. (이름의 뜻에 모든것이 나와있다) 


쉽게 말하서 인텐트는 어떤 일이 일어났으면 좋겠다는 의사, 의향, 의도를 담은 메시지이다. 사용법은 일반적으로 Intent클래스에서 파생된 객체를 생성하여 그 내부에 실행되기 바라는 어떤 작업에 대한 구체적인 내용(실행될 activity, 사용할 data의 위치 등등) 를 첨부후에 전송하면 된다.


Content provider를 제외한 모든 안드로이드 컴포넌트는 Intent의해 구동 된다. (Content provider는 ContentResoler의 요청에 의해 구동됨)  


지금은 여기 까지만 개념을 잡고 Intent의 자세한 사용은 추후에 알아보자.

 




 

3. 안드로이드 어플리케이션 개발시 활용 가능한 자원


  • 저장소: 스마트폰 내부 메모리 또는 외장 SD메모리에 어플리케이션 운용에 필요한 자료 쓰기 & 읽기 가능
  • 네트워크: 안드로이드 디바이스는 인터넷 통신을 기본으로 지원함. 개발할 어플리케이션에서 자바의 소켓 이용은 물론 안드로이드에 내장된 webkit기반의 웹 브라우저 위젯까지 embedding 할 수 있음
  • 멀티미디어: 각 안드로이드 디바이스마다 다르겠지만 동영상, 이미지, 사운드 등의 기록과 읽기가 가능. 어플리케이션은 안드로이드 디바이스에 질의(Query)를해 자신이 구동되고있는 디바이스에서 지원하는 멀티미디어 형식을 파악함
  • GPS: 안드로이드 디바이스는 일반적으로 GPS모듈을 내장함. 이를 바탕으로 위치기반 서비스 가능
  • 통신: 안드로이드 디바이스는 일반적으로 휴대폰의 기본기능인 전화, 문자을 주고 받을 수 있음



저작자 표시 비영리 변경 금지
신고
Posted by 무한만족 i티거