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