120 likes | 281 Views
앱창작터. To be an Android Expert. 안드로이드 여대생 기초 과정. Application Fundamentals. 문양세 , 최미정 강원대학교 IT 대학 컴퓨터학부. 안드로이드 애플리케이션 빌드. Library. Java (classes). . apk (android package). aapk. identifiers. Resource & Configuration. aapk : android application package tool.
E N D
앱창작터 To be an Android Expert • 안드로이드여대생 기초 과정 Application Fundamentals 문양세, 최미정 강원대학교 IT대학 컴퓨터학부
안드로이드 애플리케이션 빌드 Library Java (classes) .apk (android package) aapk identifiers Resource & Configuration aapk: android application package tool
애플리케이션 vs. 컴포넌트 (1/2) 컴포넌트? • 중요 특징: 한애플리케이션이 다른 애플리케이션의 컴포넌트를 사용할 수 있다. • 내 app에서 다른 app에서 만든 scroller를 사용할 수 있다. • 다른 app의 코드를 통합/링크하지 않고, 필요할 때 해당 영역(piece)을 간단히 구동시킨다. • 다른 애플리케이션의 컴포넌트를 인스턴스화 한다. • 일반적인 시스템과 달리, 안드로이드에서는 애플리케이션이 하나의 시작점(entry point)을 가지지 않는다. • 대신 시스템이 필요로 할 때마다, 컴포넌트들이 인스턴스화 되어실행된다.
애플리케이션 vs. 컴포넌트 (2/2) Component에 대한 정보, configuration 등을 담고 있음 Android application components 그림: from kandroid.org
Activity • 우리가 볼 수 있는 visual interface를가진다. 예를 들어, • 사용자에게 선택 기능을 제공하는 메뉴 아이템 리스트 • 사진과 함께 캡션을 보여주는 기능 • 텍스트 메시징 애플리케이션의 경우 • 첫 번째, 컨택(전화번호부) 리스트를 보여주는 액티비티 • 두 번째, 메시지를 작성하는 액티비티 • 세 번째, 받은 편지함의 메시지를 보여주는 액티비티 • 사용자 액티비티는Activity의 sub-class로 만들어진다.
Activity Lifecycle (1/2) • 액티비티의 세 가지 상태 • 활성화(active) or 실행 중(running) 상태 • 해당 액티비티가 사용자 액션에 대한 포커스를 가지고 있을 때이다. • 좀 더 쉽게 말해서,foreground 화면에 나타나 있을 때이다. • 멈춤(paused) 상태 • 포커스는 보유하지 않았으나, 여전히 사용자에게 보이는 상태이다. • 다른 액티비티에 의해 가려져 부분적으로만 보이는 상태로서, 해당 액티비티는 살아있는 상태이다. • 정지(stop) 상태 • 다른 액티비티에 의해 완전히 가려진 상태이다. • 여전히 액티비티의 정보는 유지되나, 메모리 부족 시 종료될 가능성이 높은 상태이다.
Activity Lifecycle (2/2) entirelifetime foregroundlifetime visiblelifetime
Service • Visual interface를가지지 않는다. • (눈에 보이지 않은 채) 백그라운드에서 수행된다. • 예: music player, network download • 실행 중인 서비스에 접속(connect)이 가능하다. • 음악 재생 과정에서, 되감기, 정지 등이 수행됨 • Service는 main thread에서 수행될수 있으나, 다른 컴포넌트의 user interface에 영향을 주지 않도록별도의 thread로 작동시킨다.
Broadcast Receiver • (아무것도 하지 않으나) broadcast announcement를 수신하고 응답한다. • 배터리 부족, 언어 설정 바뀜 등의 시스템 공지를 수신/처리함 • 대표적인 예가 SMS 수신임 • Visual interface를 가지지 않으나, 정보 수신 시, • 이를 처리하는 activity를 시작하거나, • NotificationManager를 사용하여사용자에게 이를 알릴 수 있다.
Content Provider ContactsProvider • 애플리케이션 간에 공유 가능한 데이터 집합을 만든다. • 예: 전화번호부, photo gallery • SQLite 혹은 file을 사용할 수 있으며, 자신이 관리하는 데이터의 공유를 위해 표준 method 집합을 구현한다.
AndroidManifest.xml • 안드로이드는 애플리케이션 컴포넌트를 시작하기 전에, 컴포넌트 존재를 인식해야 한다. • 컴포넌트들이 Manifest.xml 파일에 선언된다. • AndroidManifest.xml은 XML 파일로서, 컴포넌트 선언, 퍼미션 등의 configuration 정보를 가진다.