To be an Android Expert
문양세강원대학교 IT대학 컴퓨터학부
애플리케이션 기초
애플리케이션 컴포넌트 애플리케이션 컴포넌트
액티비티와 태스크Part 1
프로세스와 쓰레드
컴포넌트 생명주기Part 2
2
Library
Java (classes).apk
(android package)aapk
identifiers
Resource & Configuration
3aapk: android application package tool
4
Native apk: “/system/app” 디렉토리에 있음
당근, 에뮬레이터를 실행 후, 리눅스에 접근해야 합니다.
native applications
5
Third party apk: “/data/app” 디렉토리에 있음
third party applications(즉 제가 만든 li ti 입니다)
6
(즉, 제가 만든 application 입니다)
모든 app은 자신의 리눅스 프로세스 내에서 실행된다 모든 app은 자신의 리눅스 프로세스 내에서 실행된다.◦ App의 실행 필요가 있을 때, 프로세스가 시작된다.◦ 더 이상 필요치 않고 다른 app에서 자원이 요구될 때 종료된다◦ 더 이상 필요치 않고, 다른 app에서 자원이 요구될 때 종료된다.
각 프로세스는 자기 자신의 virtual machine을 가진다.각 에는 유한 리눅 가 부여된다 각 app에는 고유한 리눅스 user ID가 부여된다.◦ 리눅스 permission scheme을 이용한다.
User ID
7
애플리케이션 기초
애플리케이션 컴포넌트 애플리케이션 컴포넌트
액티비티와 태스크
프로세스와 쓰레드
컴포넌트 생명주기Part 2
8
중요 특징: 한 애플리케이션이 다른 애플리케이션의 컴 중요 특징: 한 애플리케이션이 다른 애플리케이션의 컴
포넌트를 사용할 수 있다.내 app에서 다른 app에서 만든 scroller를 사용할 수 있다◦ 내 app에서 다른 app에서 만든 scroller를 사용할 수 있다.
◦ 다른 app의 코드를 통합/링크하지 않고, 필요할 때 해당 영역
(piece)을 간단히 구동시킨다(piece)을 간단히 구동시킨다.
다른 애플리케이션의 컴포넌트를 인스턴스화 한다.일반적인 시스템과 달리 안드로이드에서는 애플리케이션이 하나◦ 일반적인 시스템과 달리, 안드로이드에서는 애플리케이션이 하나
의 시작점(entry point)을 가지지 않는다.◦ 대신 시스템이 필요로 할 때마다 컴포넌트들이 인스턴스화 되어◦ 대신 시스템이 필요로 할 때마다, 컴포넌트들이 인스턴스화 되어
실행된다.컴포넌트?
9
컴포넌트?
Component에 대한 정보, configuration 등을 담고 있음
Android application componentscomponents
그림: from kandroid.org
10
그림: from kandroid.org
11
우리가 볼 수 있는 visual interface를 가진다 예를 들어 우리가 볼 수 있는 visual interface를 가진다. 예를 들어,◦ 사용자에게 선택 기능을 제공하는 메뉴 아이템 리스트
◦ 사진과 함께 캡션을 보여주는 기능◦ 사진과 함께 캡션을 보여주는 기능
텍스트 메시징 애플리케이션의 경우첫 번째 컨택(전화번호부) 리스트를 보여주는 액티비티◦ 첫 번째, 컨택(전화번호부) 리스트를 보여주는 액티비티
◦ 두 번째, 메시지를 작성하는 액티비티
세 번째 받은 편지함의 메시지를 보여주는◦ 세 번째, 받은 편지함의 메시지를 보여주는
액티비티
사용자 액티비티는 Activity의 사용자 액티비티는 Activity의sub-class로 만들어진다.
12
Skeleton of an Activity Skeleton of an Activity
13
그림: from kandroid.org
Example of an Activity Example of an Activity
14
Visual interface를 가지지 않는다 Visual interface를 가지지 않는다.◦ (눈에 보이지 않은 채) 백그라운드에서 수행된다.◦ 예: music player network download◦ 예: music player, network download
실행 중인 서비스에 접속(connect)이 가능하다.음악 재생 과정에서 되감기 정지 등이 수행됨◦ 음악 재생 과정에서, 되감기, 정지 등이 수행됨
Service는 main thread에서 수행될
수 있으나, 다른 컴포넌트의
user interface에 영향을 주지 않도록
별도의 thread로 작동시킨다.
15
Skeleton of a Service Skeleton of a Service
그림: from kandroid org
16
그림: from kandroid.org
(아무것도 하지 않으나) broadcast announcement를 (아무것도 하지 않으나) broadcast announcement를수신하고 응답한다.배터리 부족 언어 설정 바뀜 등의 시스템 공지를 수신/처리함◦ 배터리 부족, 언어 설정 바뀜 등의 시스템 공지를 수신/처리함
◦ 대표적인 예가 SMS 수신임
Vi l i t f 를 가지지 않으나 정보 수신 시 Visual interface를 가지지 않으나, 정보 수신 시, ◦ 이를 처리하는 activity를 시작하거나,
N ifi i M 를 사용하여◦ NotificationManager를 사용하여
사용자에게 이를 알릴 수 있다.
17
Skeleton of a Broadcast Receiver Skeleton of a Broadcast Receiver
18
Example of a Broadcast Receiver Example of a Broadcast Receiver
19
애플리케이션 간에 공유 가능한 데이터 집합을 만든다 애플리케이션 간에 공유 가능한 데이터 집합을 만든다.◦ 예: 전화번호부, photo gallery◦ SQLite 혹은 file을 사용할 수 있으며 자신이 관리하는 데이터의◦ SQLite 혹은 file을 사용할 수 있으며, 자신이 관리하는 데이터의
공유를 위해 표준 method 집합을 구현한다.
ContactsProvider
20
Skeleton of a Content Provider Skeleton of a Content Provider
21
Example of a Content Provider Example of a Content Provider
22
Intent는 컴포넌트를 activate시키는 역할을 함 Intent는 컴포넌트를 activate시키는 역할을 함
Intent object를 다음 method의 파라미터로 전달함으로
써 ti t 된다써, activate된다.◦ Activity: startActivity(), startActivityForResult()
S S () b dS ()◦ Service: startService(), bindService()◦ Broadcast Receiver: sendBroadcast(), sendOrderedBroadcast()
참고: Content Provider는 intent가 아니라, content resolver에 의해 activate된다.
23
24그림: from kandroid.org
25그림: from kandroid.org
안드로이드는 애플리케이션 컴포넌트를 시작하기 전에 안드로이드는 애플리케이션 컴포넌트를 시작하기 전에, 컴포넌트 존재를 인식해야 한다.◦ 컴포넌트들이 Manifest xml 파일에 선언된다◦ 컴포넌트들이 Manifest.xml 파일에 선언된다.◦ AndroidManifest.xml은 XML 파일로서, 컴포넌트 선언, 퍼미션 등의
configuration 정보를 가진다.
26
근데 XML이 뭐야? (위키: http://en wikipedia org/wiki/XML) 근데, XML이 뭐야? (위키: http://en.wikipedia.org/wiki/XML)◦ HTML: HyperText Markup Language◦ SGML: Standard Generalized Markup Lanaguge◦ SGML: Standard Generalized Markup Lanaguge◦ XML: eXtendsible Markup Language)
XML을 엄청 잘 알아야 하나요? XML을 엄청 잘 알아야 하나요?◦ 꼭 그렇진 않아요. 그때 그때 필요한 걸 배우면 되요.기본적인 구조는 HTML과 거의 유사합니다 태그만 뺴고◦ 기본적인 구조는 HTML과 거의 유사합니다. 태그만 뺴고…
◦ HTML도 모르겠다고요? 그건, 아닌데… 까먹었다고요? http://cs kangwon ac kr/ ysmoon/courses/2010 1/wp/05 pdf http://cs.kangwon.ac.kr/~ysmoon/courses/2010_1/wp/05.pdf
27
An example of AndroidManifest xml An example of AndroidManifest.xml
Activity 선언
A li i 선언
28
Application 선언
Another example of AndroidManifest xml Another example of AndroidManifest.xml
29
애플리케이션 기초
애플리케이션 컴포넌트 애플리케이션 컴포넌트
액티비티와 태스크
프로세스와 쓰레드
컴포넌트 생명주기
P t 2 ti d l t
30
Part 2 – continued later.
31
Top Related