210 likes | 538 Views
04. 안드로이드 응용 프로그램의 구조. (1) 안드로이드 응용프로그램 수명주기. 1) 활동을 통한 과제 수행. 안드로이드 활동 - 응용프로그램이 수행하는 고유한 하나의 과제 또는 작업 - Activity Class (android.app.Activity). 게임 활동 구성예. 시동 / 스플래시 활동. 주 메뉴 활동. 고득점 활동. 게임 플레이 활동. 도움말 / 프로그램 정보 활동. (1) 안드로이드 응용프로그램 수명주기. 2) 의도를 통한 활동 전환.
E N D
(1) 안드로이드 응용프로그램 수명주기 1) 활동을 통한 과제 수행 • 안드로이드 활동- 응용프로그램이 수행하는 고유한 하나의 과제 또는 작업- Activity Class (android.app.Activity) • 게임 활동 구성예 시동/스플래시 활동 주 메뉴 활동 고득점 활동 게임 플레이 활동 도움말/프로그램 정보 활동
(1) 안드로이드 응용프로그램 수명주기 2) 의도를 통한 활동 전환 • 주 활동 (main activity) 설정 가능- iPhone 응용프로그램에는 main() 함수 없음- 안드로이드는 AndroidManifest.xml을 통해 가능 • 클래스 이름으로 새 활동 띄우기=> startActivity() 호출 (Intent형식의 매개변수) ※ Intent (의도를 나타내는 클래스) 란? - 비동기 메시지 메커니즘- 운영프로그램이 요청의 위해 의도메시지를 운영체제에 보냄,운영체제는 적절한 활동이나 서비스를 통해 요청처리 - 객체 구현 startActivity(new Intent(getApplicationContext(), MyDrawActivity.class)); 명시적인 Intent 객체, MyDrawActivity 해당하는 활동요청
(1) 안드로이드 응용프로그램 수명주기 2) 의도를 통한 활동 전환 • 작용과 자료로 의도 만들기- 적절한 의도 필터(intent filter)를 만들어서 안드로이드 매니페스트 파일등록,운영체제가 조건을 만족하는 활동 선택- Intent객체는 작용과 자료로 이뤄짐 • 다른 응용프로그램에 속한 활동 띄우기- 적절한 권한보유시 다른 응용프로그램에 있는 외부활동들을 띄우는 것도 가능함- Intent객체는 작용과 자료로 이뤄짐- 구현예제 Uri number = Uri.parse(tel:5555551212);Intent dial = new Intent(Intent.ACTION_DIAL, number);startActivity(dial);
(1) 안드로이드 응용프로그램 수명주기 2) 의도를 통한 활동 전환 • 의도를 통한 추가정보 전달- Intent클래스는 Bundle형식 객체에 이름/ 값 쌍을 저장하거나 조회하기 위한 편의용 메서드들도 제공 - 자료추가 예 Intent intent = new Intent(this, MyActivity.class);intent.putExtra(“SomeStringData”,”Foo”); intent.putExtra(“SomeBooleanData”,false); • 메뉴를 이용한 응용프로그램활동들과 의도들의 조직화 • 주 메뉴 : 스위치형식, 응용프로그램의 각 활동 실행- 드릴다운 : 디렉터리형식,하나의 메뉴항목은 하나의 활동에 해당하나, 펼쳐서 나오는 하위항목마다 각자 다른 자료가 의도를 통해서 활동전달
(1) 안드로이드 응용프로그램 수명주기 2) 의도를 통한 활동 전환 • 서비스와 방송 수신자 다루기- 서비스 배경 프로세스로 실행, 웹서버와 비슷한 방식, 의도를 통해 실행* 관련메서드 : startService()와 bindService() - 방송 특정메시지에 관심을 표명했던 응용프로그램들 모두에게 전달,한 프로그램이 방송의 송신과 수신을 모두 수행 가능, 좀 더 넓은 범위의 대상들에게 특정사진을 알리는 용도
(1) 안드로이드 응용프로그램 수명주기 3) 안드로이드 활동의 수명주기 • 스택구조에 의한 관리 새활동이 시작되면 스택 제일위에 있던 Activity객체가정지되고 새활동에 해당되는 Activity객체가 스택 제일위에 추가된다.그 활동이 끝나면 해당Activity객체가 스택에서 제거되고 이전의 Activity객체가 실행을 재개한다. • 수명주기란?한 활동이 생성되고 소멸되기까지의 일생
활동이 활동이 활동이 활동이 활동이 전경이 전경이 배경으로 배경으로 전경에서 간다. 된다. 간다. 실행됨 된다. (1) 안드로이드 응용프로그램 수명주기 3) 안드로이드 활동의 수명주기 • 활동콜백을 이용한 응용프로그램 상태 및 자원관리 활동시작 이 요청됨 onCreate() onStart() onRestart() onResume() 활동이 실행됨 메모리에서 활동이 삭제된다. onPause() onStop() onDestroy()
(1) 안드로이드 응용프로그램 수명주기 3) 안드로이드 활동의 수명주기 • 활동콜백을 이용한 응용프로그램 상태 및 자원관리 • onCreate() - 활동의 정적자료의 초기화에 적합 - 레이아웃과 자료묶기 같은 초기설정작업 수행 • onResume() - 활동 자료의 초기화 및 준비에 적합- 오디오나 동영상, 애니메이션을 시작하기에 적합 • onPause() - 활동 자료의 중지, 저장, 해제에 적합- onResume()메서드에서 조회한 자료와 자원은 반드시onPause()에서 모두 해제해야 한다.
(1) 안드로이드 응용프로그램 수명주기 3) 안드로이드 활동의 수명주기 • 활동전이 관리 (다른활동으로 넘어가는 것) • 영구적인 활동전이- 스플레시화면에서 주 메뉴로 전이되는 경우 - startActivity() 메서드와 적절한 finish() 메서드를 사용 • 일시적인 활동전이- 자식활동이 대화상자를 표시한 후 원래의 활동으로 복귀 - startActivityForResult() 메서드와onActivityResult() 메서드를 사용
(2) AndroidManifest.xml • AndroidManifest.xml ? - 안드로이드 응용프로그램마다 하나씩 존재해야 함- 응용프로그램의 신원(identify)에 대한 중요정보(이름,버전, 구성요소,권한 등) 수록- 안드로이드 프로젝트의 최상위에 놓인다. - 이클립스사용시 해당 파일편집기를 이용하여 수정- <manifest>에 루트요소, <application>에 세부요소
(2) AndroidManifest.xml 1) 응용프로그램의 신원관리 • 응용프로그램의 버전 설정 <manifest xmlns:android=http://schemas.android.com/apk/res/anroid package=“com.androidbook.multimedia”android:versionCode=“1” android:versionName=“1.0.0”> • android:versionName - 사용자 친화적인, 개발자가 정의하는 버전이름 - 사용자가 응용프로그램을 내려받거나 관리할때 표시됨 • android:versionCode - 운영체제가 응용프로그램 업그레이드를 관리
(2) AndroidManifest.xml 1) 응용프로그램의 신원관리 • 응용프로그램의 이름과 아이콘 <application android:icon=“@drawable/icon” android:label=“@string/app_name”> • 커스텀 아이콘부여- 48x48픽셀크기의 PNG파일을 만들어 하나의 Drawable 자원 으로서 응용프로그램에 추가 - android:icon 특성에 그 아이콘을 지정 • 활동을 비롯한 응용프로그램 구성요소 등록 <activity android:name=“AudioActivity” /> • 모든활동에 정의해야 한다- 정의되지 않을시 해당활동은 실행되지 않음 (폭주상황과 유사한 오류메시지 나옴)
(2) AndroidManifest.xml 1) 응용프로그램의 신원관리 • 의도필터를 이용해서 한 활동을 응용프로그램의 주 진입점으로 지정하기 <activity android:name=“.MainMenuActivity” android:label=“@string/app_name”> <intent-filter> <action android:name=“android.intent.action.MAIN”/> <category android:name=“android.intent.category.LAUNCHER/>” </intent-filter></activity> - MAIN : 작용 종류- LAUNCHER : 작용 범주
(2) AndroidManifest.xml 1) 응용프로그램의 신원관리 • 그 외의 의도 필터 설정 <intent-filter> <action android:name=“android.intent.action.VIEW”/> <category android:name=“android.intent.category.BROWSABLE”/> <category android:name=“android.intent.category.DEFAULT”/> <data android:scheme=“geoname”/></intent-filter> - VIEW : 미리 정의된 작용 (특정 콘텐트의 내용표시) - BROWSABLE : 사용 범주- “geoname” : 자료스킴 geoname:// 로 시작되는 URI를 가진 의도가 전달되면 이 의도 필터를 가진 활동이 시작
(2) AndroidManifest.xml 2) 권한 다루기 • 응용프로그램에 필요한 권한 등록 응용프로그램이 어떤 공유자원이나 특정기능을 사용해야 한다면해당 접근권한 들을 AndroidManifest.xml에 명시해야 한다.요청 가능한 권한들은 모두 android.Manifest.permission클래스에정의되어 있다- 내장카메라 접근요청 <uses-permission android:name=“android.permission.CAMERA”/> • 응용프로그램이 다른 응용프로그램에게 허락하는 권한들을 등록 • 권한 점검 및 적용- 활동이나 서비스를 시작할 때 - 콘텐트 제공자가 제공하는 자료에 접근할 때- 함수 호출 수준에서- Intent 객체로 방송을 보내거나 받을때
(2) AndroidManifest.xml 3) 입력에 관한 HW / SW 요구사항 지정 • <uses-configuration>요소가 지원하는 특성
(2) AndroidManifest.xml 3) 입력에 관한 HW / SW 요구사항 지정 • <uses-configuration>요소가 지원하는 특성- 적용 예 <uses-configuration android:reqHardKeyboard=“true” android:reqTouchScreen=“finger” /> <uses-configuration android:reqHardKeyboard=“true” android:reqTouchScreen=“stylus” /> 응용프로그램이 하드웨어 키보드를 요구하며 감압식 터치스크린 또는정전식 터치스크린을 요구{OR (또는) 로 결합할 수 없기 때문에 2개로 따로 지정}
(2) AndroidManifest.xml 4) 라이브러리와 안드로이드 SDK버전 다루기 • 최소 안드로이드 SDK버전 지정 • <uses-sdk>요소의 android:minSdkVersion으로 지정- SDK에 연관된 API수준으로 표기 <uses-sdk android:minSdkVersion="2"/> API 수준 = “2” (SDK 1.1) <uses-sdk android:minSdkVersion=“3"/> API 수준 = “3” (SDK 1.5) <uses-sdk android:minSdkVersion=“4"/> API 수준 = “4” (SDK 1.6) • 다른 패키지 링크 • <application>요소안에 <uses-library>요소로 등록- 구현 예제 <uses-library android:name=“com.mylibrary.stuff“/>