13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML:...

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

Transcript of 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML:...

Page 1: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

To be an Android Expert

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

Page 2: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

2

Page 3: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

HangulKeyboard apk 파일을 다운로드 HangulKeyboard.apk 파일을 다운로드

안드로이드 SDK의 tools 경로 아래에 복사한 후, 도스 상에서 다음과 같이 adb 명령어 수행

adb install HangulKeyboard.apkadb install HangulKeyboard.apk 이클립스에서 에뮬레이터를 구동

에뮬레이터 메인화면에서 다음과 같이 이동

메뉴버튼 설정 언어 및 키보드메뉴버튼 설정 언어 및 키

Android 키보드와 한글 접촉식 키보드를 선택

3

Page 4: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

4

Page 5: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

애플리케이션 기초

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

액티비티와 태스크Part 1

프로세스와 쓰레드

컴포넌트 생명주기Part 2

5

Page 6: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Library

Java (classes).apk

(android package)aapk

identifiers

Resource & Configuration

6aapk: android application package tool

Page 7: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

7

Page 8: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

native applications

8

Page 9: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

9

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

Page 10: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

User ID

10

Page 11: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

애플리케이션 기초

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

액티비티와 태스크

프로세스와 쓰레드

컴포넌트 생명주기Part 2

11

Page 12: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

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

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

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

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

실행된다.컴포넌트?

12

컴포넌트?

Page 13: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

Android application componentscomponents

그림: from kandroid.org

13

Page 14: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

그림: from kandroid.org

14

Page 15: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

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

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

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

액티비티

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

15

Page 16: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Skeleton of an Activity Skeleton of an Activity

16

그림: from kandroid.org

Page 17: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Example of an Activity Example of an Activity

17

Page 18: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

Service는 main thread에서 수행될

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

user interface에 영향을 주지 않도록

별도의 thread로 작동시킨다.

18

Page 19: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Skeleton of a Service Skeleton of a Service

그림: from kandroid org

19

그림: from kandroid.org

Page 20: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

◦ 대표적인 예가 SMS 수신임

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

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

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

20

Page 21: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Skeleton of a Broadcast Receiver Skeleton of a Broadcast Receiver

21

Page 22: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Example of a Broadcast Receiver Example of a Broadcast Receiver

22

Page 23: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

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

ContactsProvider

23

Page 24: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Skeleton of a Content Provider Skeleton of a Content Provider

24

Page 25: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Example of a Content Provider Example of a Content Provider

25

Page 26: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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된다.

26

Page 27: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

27그림: from kandroid.org

Page 28: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

28그림: from kandroid.org

Page 29: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

configuration 정보를 가진다.

29

Page 30: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

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

30

Page 31: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

An example of AndroidManifest xml An example of AndroidManifest.xml

Activity 선언

A li i 선언

31

Application 선언

Page 32: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

Another example of AndroidManifest xml Another example of AndroidManifest.xml

32

Page 33: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

애플리케이션 기초

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

액티비티와 태스크

프로세스와 쓰레드

컴포넌트 생명주기

P t 2 ti d l t

33

Part 2 – continued later.

Page 34: 13. App Fundamentals[Part1] - Kangwonysmoon/courses/2011_1/android/... · 2016-06-02 · HTML: HyperText Markup Language SGML:StandardGeneralizedMarkupSGML: Standard Generalized Markup

34