안농하세요 더넬입니당!
이전 포스팅에서는 안드로이드구조에 대해서 알아봤어요!
이번엔 애플리케이션을 작성하는데 알아두어야 할 필수적인 개념들에 대해서
포스팅합니다
알아 볼 안드로이드 핵심 개념!
애플리케이션을 구성하는 컴포넌트
인텐트(intent)
애플리케이션에 대한 정보를 표시하는 매니페스트 파일
안드로이드는 SDK 도구를 이용하면 자바 코드를 컴파일하고 리소스와 결합해 안드로이드 패키지를 만듭니다
여러파일들의 결합으로 만들어진 안드로이드 패키지(.apk 파일)은 모바일 디바이스로 다운로드되어
하나의 애플리케이션이 됩니다
소스파일부터 애플리케이션까지
자바소스파일이 컴파일러에 의해 .dex 파일로
.dex 파일은 apkbuilder에 의해 .apk 파일로
.apk 파일은 모바일 디바이스에 다운로드되어 하나의 애플리케이션이 되지요
- 애플리케이션은 리눅스 운영체제 상 서로 다른 사용자
- 운영체제가 애플리케이션은 고유한 아이디 부여
- 애플리케이션 파일은 다른 애플리케이션이 접근 불가
- 각 애플리케이션은 자신의 가상 머신에서 실행됨 (다른 애플리케이션과 완벽한 분리)
애플리케이션 컴포넌트
안드로이드는 컴포넌트(component)로 구성됩니다. 컴포넌트는 애플리케이션을 하나의 블록이며, 각 컴포넌트들은 하나의 독립된 엔티티로 존재하며 정해진 역할을 수행합니다
안드로이드에서는 하나의 애플리케이션이 다른 애플리케이션의 허가를 받아 컴포넌트를 공유해 사용할 수 있습니다
따라서 메인()함수를 가지지 않으며, 내부의 다양한 컴포넌트를 통해 여러갈래로 실행될 수 있습니다
ex) 다른 애플리케이션에서 사진을 찍기위해 공유된 카메라 애플리케이션의 액티비티를 시작(프로세스를 시작)을 하게함
안드로이드는 4가지 타입의 컴포넌트
- 액티비티
사용자 인터페이스 화면을 가지고 하나의 작업을 담당하는 컴포넌트로
하나의 애플리케이션에서 여러개의 액티비티를 가질 수 있습니다
Activity클래스를 상속받아 작성합니다
- 서비스(Service)
백그라운드에서 실행되는 컴포넌트로 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업시 사용하며
사용자 상호작용을 방해하지 않으며 네트워크를 통해 데이터를 가져오는 것도 가능합니다
다른 컴포넌트에서 시작되며 Service 클래스를 상속받아 작성됩니다
ex) 미디어 플레이어에서 2개의 컴포넌트 : 음악재생화면(액티비티), 재생서비스(서비스)
- 방송 수신자(broadcast receiver)
방송을 받고 반응하는 컴포넌트로 시스템에서 발생합니다
애플리케이션도 방송송출이 가능하며 일반적으로 인터페이스를 가지지 않습니다
사용자에게 경고를 위해 통지매니저(Notification Manager)도 사용할 수 있습니다
BroadcastReceiver 클래스를 상속받아 작성합니다
ex) 배터리가 낮은 상태를 알림, 상태바에 아이콘을 통해 이벤트 발생을 알림
- 콘텐트 제공자
데이터를 관리하고 다른 애플리케이션에게 데이터를 제공하는 컴포넌트입니다
다른 애플리케이션이 데이터를 받고 저장할 수 있는 메소드들을 재정의해 제공
ContentProvider클래스를 상속받아 작성하며
콘텐트 제공자는 별도의 객체 콘텐트 리졸버(ContentResolver)를 사용해 실행
ex) 전화번호부 애플리케이션에 저장된 사람들의 연락처는 데이터베이스의 형태,
이 데이터를 콘텐트 제공자를 통해 카카오톡 등 다른 애플리케이션에서 데이터 공유 및 활용이 가능
( 액티비티#1 주소록화면 + 콘텐트 제공자 #1 주소를 제공 )
인텐트(intent)
다른 애플리케이션의 컴포넌트를 활성화 시키는 인텐트!
인텐트는 안드로이드의 비동기적인 메시지로 적절한 컴포넌트를 찾아서 활성화해줍니다
Intent클래스의 객체이며 컴포넌트가 필요로 하는 요청내용을 가지고 있습니다
- 액티비티 활성화 메소드
- 서비스 활성화 메소드
- 방송 활성화 메소드
- 콘텐트 제공자 활성화 메소드
콘텐트 리졸버의 query() 호출
매니페스트 파일(manifest file)
애플리케이션안의 모든 컴포넌트들이 선언되는 매니페스트 파일(manifest file)
적재 목록같은 개념으로 매니페스트파일은 XML로 작성됩니다
모든 애플리케이션에 대해 AndroidManifest.xml 이란 이름으로 존재하며
안드로이드에게 애플리케이션의 컴포넌트에 대해서 알립니다
* 메니페스트 파일에 선언되지 않은 컴포넌트(서비스, 액티비티, 콘텐트 제공자)는 시스템에서 식별하지 못합니다
매니페스트 파일이 하는 일들
- 컴포넌트 선언
- 인터넷 접근같은 애플리케이션이 요청하는 권한 나열
- 애플리케이션이 필요한 최소 API 레벨 선언
- 애플리케이션이 필요로 하는 하드웨어 사양 선언( ex 카메라, 블루투스, 멀티터치스크린 )
읽어주셔서 감사드립니다~
수정해야될 부분이 있다면 과감히 알려주세욤
^^*
'Study > Programming' 카테고리의 다른 글
[HTML] Table 태그 메모 (0) | 2014.04.09 |
---|---|
HTML Form 태그 (0) | 2014.04.01 |
안드로이드 구조, 운영체제의 중요 요소! (0) | 2014.03.29 |
안드로이드 프로그래밍 시작! 안드로이드 특징은? (0) | 2014.03.28 |
윈도우 기반의 소켓관련 함수 (0) | 2014.03.25 |