31
To be an Android Expert 문양세 강원대학교 IT대학 컴퓨터학부

04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

To be an Android Expert

문양세강원대학교 IT대학 컴퓨터학부

Page 2: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

애플리케이션 기초

애플리케이션 컴포넌트 애플리케이션 컴포넌트

액티비티와 태스크Part 1

프로세스와 쓰레드

컴포넌트 생명주기Part 2

2

Page 3: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Library

Java (classes).apk

(android package)aapk

identifiers

Resource & Configuration

3aapk: android application package tool

Page 4: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

4

Page 5: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Native apk: “/system/app” 디렉토리에 있음

당근, 에뮬레이터를 실행 후, 리눅스에 접근해야 합니다.

native applications

5

Page 6: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Third party apk: “/data/app” 디렉토리에 있음

third party applications(즉 제가 만든 li ti 입니다)

6

(즉, 제가 만든 application 입니다)

Page 7: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

모든 app은 자신의 리눅스 프로세스 내에서 실행된다 모든 app은 자신의 리눅스 프로세스 내에서 실행된다.◦ App의 실행 필요가 있을 때, 프로세스가 시작된다.◦ 더 이상 필요치 않고 다른 app에서 자원이 요구될 때 종료된다◦ 더 이상 필요치 않고, 다른 app에서 자원이 요구될 때 종료된다.

각 프로세스는 자기 자신의 virtual machine을 가진다.각 에는 유한 리눅 가 부여된다 각 app에는 고유한 리눅스 user ID가 부여된다.◦ 리눅스 permission scheme을 이용한다.

User ID

7

Page 8: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

애플리케이션 기초

애플리케이션 컴포넌트 애플리케이션 컴포넌트

액티비티와 태스크

프로세스와 쓰레드

컴포넌트 생명주기Part 2

8

Page 9: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

중요 특징: 한 애플리케이션이 다른 애플리케이션의 컴 중요 특징: 한 애플리케이션이 다른 애플리케이션의 컴

포넌트를 사용할 수 있다.내 app에서 다른 app에서 만든 scroller를 사용할 수 있다◦ 내 app에서 다른 app에서 만든 scroller를 사용할 수 있다.

◦ 다른 app의 코드를 통합/링크하지 않고, 필요할 때 해당 영역

(piece)을 간단히 구동시킨다(piece)을 간단히 구동시킨다.

다른 애플리케이션의 컴포넌트를 인스턴스화 한다.일반적인 시스템과 달리 안드로이드에서는 애플리케이션이 하나◦ 일반적인 시스템과 달리, 안드로이드에서는 애플리케이션이 하나

의 시작점(entry point)을 가지지 않는다.◦ 대신 시스템이 필요로 할 때마다 컴포넌트들이 인스턴스화 되어◦ 대신 시스템이 필요로 할 때마다, 컴포넌트들이 인스턴스화 되어

실행된다.컴포넌트?

9

컴포넌트?

Page 10: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Component에 대한 정보, configuration 등을 담고 있음

Android application componentscomponents

그림: from kandroid.org

10

Page 11: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

그림: from kandroid.org

11

Page 12: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

우리가 볼 수 있는 visual interface를 가진다 예를 들어 우리가 볼 수 있는 visual interface를 가진다. 예를 들어,◦ 사용자에게 선택 기능을 제공하는 메뉴 아이템 리스트

◦ 사진과 함께 캡션을 보여주는 기능◦ 사진과 함께 캡션을 보여주는 기능

텍스트 메시징 애플리케이션의 경우첫 번째 컨택(전화번호부) 리스트를 보여주는 액티비티◦ 첫 번째, 컨택(전화번호부) 리스트를 보여주는 액티비티

◦ 두 번째, 메시지를 작성하는 액티비티

세 번째 받은 편지함의 메시지를 보여주는◦ 세 번째, 받은 편지함의 메시지를 보여주는

액티비티

사용자 액티비티는 Activity의 사용자 액티비티는 Activity의sub-class로 만들어진다.

12

Page 13: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Skeleton of an Activity Skeleton of an Activity

13

그림: from kandroid.org

Page 14: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Example of an Activity Example of an Activity

14

Page 15: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Visual interface를 가지지 않는다 Visual interface를 가지지 않는다.◦ (눈에 보이지 않은 채) 백그라운드에서 수행된다.◦ 예: music player network download◦ 예: music player, network download

실행 중인 서비스에 접속(connect)이 가능하다.음악 재생 과정에서 되감기 정지 등이 수행됨◦ 음악 재생 과정에서, 되감기, 정지 등이 수행됨

Service는 main thread에서 수행될

수 있으나, 다른 컴포넌트의

user interface에 영향을 주지 않도록

별도의 thread로 작동시킨다.

15

Page 16: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Skeleton of a Service Skeleton of a Service

그림: from kandroid org

16

그림: from kandroid.org

Page 17: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

(아무것도 하지 않으나) broadcast announcement를 (아무것도 하지 않으나) broadcast announcement를수신하고 응답한다.배터리 부족 언어 설정 바뀜 등의 시스템 공지를 수신/처리함◦ 배터리 부족, 언어 설정 바뀜 등의 시스템 공지를 수신/처리함

◦ 대표적인 예가 SMS 수신임

Vi l i t f 를 가지지 않으나 정보 수신 시 Visual interface를 가지지 않으나, 정보 수신 시, ◦ 이를 처리하는 activity를 시작하거나,

N ifi i M 를 사용하여◦ NotificationManager를 사용하여

사용자에게 이를 알릴 수 있다.

17

Page 18: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Skeleton of a Broadcast Receiver Skeleton of a Broadcast Receiver

18

Page 19: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Example of a Broadcast Receiver Example of a Broadcast Receiver

19

Page 20: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

애플리케이션 간에 공유 가능한 데이터 집합을 만든다 애플리케이션 간에 공유 가능한 데이터 집합을 만든다.◦ 예: 전화번호부, photo gallery◦ SQLite 혹은 file을 사용할 수 있으며 자신이 관리하는 데이터의◦ SQLite 혹은 file을 사용할 수 있으며, 자신이 관리하는 데이터의

공유를 위해 표준 method 집합을 구현한다.

ContactsProvider

20

Page 21: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Skeleton of a Content Provider Skeleton of a Content Provider

21

Page 22: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Example of a Content Provider Example of a Content Provider

22

Page 23: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

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

Page 24: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

24그림: from kandroid.org

Page 25: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

25그림: from kandroid.org

Page 26: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

안드로이드는 애플리케이션 컴포넌트를 시작하기 전에 안드로이드는 애플리케이션 컴포넌트를 시작하기 전에, 컴포넌트 존재를 인식해야 한다.◦ 컴포넌트들이 Manifest xml 파일에 선언된다◦ 컴포넌트들이 Manifest.xml 파일에 선언된다.◦ AndroidManifest.xml은 XML 파일로서, 컴포넌트 선언, 퍼미션 등의

configuration 정보를 가진다.

26

Page 27: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

근데 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

Page 28: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

An example of AndroidManifest xml An example of AndroidManifest.xml

Activity 선언

A li i 선언

28

Application 선언

Page 29: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

Another example of AndroidManifest xml Another example of AndroidManifest.xml

29

Page 30: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

애플리케이션 기초

애플리케이션 컴포넌트 애플리케이션 컴포넌트

액티비티와 태스크

프로세스와 쓰레드

컴포넌트 생명주기

P t 2 ti d l t

30

Part 2 – continued later.

Page 31: 04-2. App Fundamentals[Part1](1.0h)ysmoon/courses/android/04-2.pdfAndroid application components 그림: from kandroid.org 10 그림: from kandroid.org 11 우리가볼수있는visual

31