액티비티와 리소스.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

IT CookBook, Android Studio 를 활용한 안드로이드 프로그래밍 Copyright© 2015 Hanbit Academy, Inc. All rights reserved. 14. 서비스와 브로드캐스트 리시버.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
그림으로 쉽게 설명하는 안드로이드 프로그래밍
CHAP 19. 구글맵.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Image & Video processing
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
최윤정 Java 프로그래밍 클래스 상속 최윤정
CHAP 24. nfc와 앱위젯.
Activity 액티비티는 안드로이드 응용 프로그램을 구성하는 4가지 컴포넌트 중 하나로 가장 빈번히 사용되며 사용자를 대면한다는 면에서 실질적으로 가장 중요한 요소 화면 하나에 대응되며 입출력 기능이 없어 내부에 뷰나 뷰 그룹을 가짐 setContentView 메서드.
CHAP 11. 액티비티와 인텐트.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
14. 서비스와 브로드캐스트 리시버 제목. 14. 서비스와 브로드캐스트 리시버 제목.
리소스 리소스 : 프로그램 실행에 필요한 데이터. 코드와 분리함으로써 관리 편의성이 증가한다.
5장. 참조 타입.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Visual Basic .NET 처음 사용하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
D / K / I / T / E / C / H / N / O / L / O / G / Y
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Power Java 제14장 배치 관리자.
10장. 예외처리.
자바 5.0 프로그래밍.
CHAP 12. 리소스와 보안.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바응용.
인터넷응용프로그래밍 JavaScript(Intro).
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
영상처리 실습 인공지능연구실.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
10. 액티비티와 인텐트 제목. 10. 액티비티와 인텐트 제목 액티비티의 개념을 파악한다. 인텐트의 개념과 활용법을 익힌다. 액티비티 생명주기에 대해 알아본다.
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
자바 5.0 프로그래밍.
CHAP 21. 전화, SMS, 주소록.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
( Windows Service Application Debugging )
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
3. 모듈 (5장. 모듈).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
15강_액티비티 액티비티란? 새로운 액티비티로 전환 생명주기 화면방향(Orientation)
Power Java 제14장 배치 관리자.
CHAP 15. 데이터 스토리지.
CHAP 5. 메뉴와 대화상자.
7 생성자 함수.
6 객체.
JAVA 프로그래밍 16장 JNLP.
20 XMLHttpRequest.
Presentation transcript:

액티비티와 리소스

목차 액티비티 이해 리소스 이해

액티비티 이해

애플리케이션 개념 Java 언어로 작성 자신의 리눅스 프로세스 내에서 실행 고유한 리눅스 ID가 부여 각 프로세스는 자신의 자바 가상머신을 가짐  각 프로세스는 다른 프로세스와 격리되어 실행 진입점(entry point)이 없고 인텐트(intent)에 의하여 컴포넌트 활성화 고유한 리눅스 ID가 부여 기본적으로 애플리케이션을 구성하는 파일들은 해당 사용자와 해당 애플리케이션에게만 접근 허용 시스템 자원을 절약하기 위하여 2개의 애플리케이션에 대하여 동일한 사용자 ID 공유 가능  동일한 리눅스 프로세스 안에서 실행되며 동일한 가상머신을 공유

애플리케이션 개념 느슨하게 결합된 컴포넌트로 구성 애플리케이션 컴포넌트 안드로이드 매니페스트 파일 액티비티(activity) 서비스(services) 컨텐트 제공자(content provider) 방송 수신자(broadcast receiver) 안드로이드 매니페스트 파일 각 컴포넌트간 상호 작용하는 방법을 기술 애플리케이션 구성 요소 선언  APK 외부에서 패키지 구성 요소를 알 수 있게 함 활용하고자 하는 라이브러리 지정 애플리케이션에게 필요한 접근 권한(permission) 등록 인텐트 필터(intent-filter)를 통해 애플리케이션의 진입점으로 액티비티를 지정

애플리케이션 개념 프로세스 생명주기 전경(foreground) 프로세스: 현재 초점을 갖고 있는 프로세스. 가장 마지막에 제거됨 가시(visible) 프로세스: 촛점은 없지만 화면에 보이는 프로세스 서비스(service) 프로세스 배경(background) 프로세스: 화면에 보이지 않는 프로세스 공백(empty) 프로세스: 액티비티를 가지고 있지 않은 프로세스. 메모리가 부족할 경우 바로 제거 메모리가 부족할 경우 중요하지 않은 순서대로 프로세스를 메모리에서 제거

애플리케이션 개념 액티비티와 태스크 액티비티: 같은 애플리케이션 내에 존재하는 액티비티 뿐만 아니라 다른 애플리케이션 내에 존재하는 액티비티까지 호출 가능 예) 서적 관리 애플리케이션 = 서적 관리 일반 기능 + 특정 기능 (바코드 스캔) 한 애플리케이션에서 다른 애플리케이션의 컴포넌트를 거의 자유자재로 접근 가능  파일의 구성 면에서는 애플리케이션의 경계가 뚜렷, 실제로 애플리케이션의 실행 면에서는 애플리케이션간 경계가 없음 각 컴포넌트들, 특히 화면에 표시되면서 사용자와 상호작용하는 액티비티는 애플리케이션 단위보다 태스크(Task) 단위로 관리 태스크(Task): 사용자가 실질적으로 “하나의 애플리케이션처럼” 느끼는 액티비티들의 집합임.

애플리케이션 개념 태스크와 프로세스 태스크 프로세스 연관된 액티비티의 집합 다수의 프로세스와 APK에 걸쳐 존재 가능 커널 프로세스 기본적으로 APK는 하나의 프로세스에서 동작 하나의 APK에서 다수의 프로세스 매핑 가능 application application

애플리케이션 개념 액티비티 스택

액티비티 상태와 생명주기 개요 안드로이드는 모바일 기기에서 구동되기 때문에 데스크탑 애플리케이션에 비하여 더욱 효율적 메모리 관리가 요구 애플리케이션 컴포넌트의 중요 요소인 액티비티도 효율적인 메모리 관리를 위하여 액티비티 생성 및 소멸 과정인 생명주기가 있음 액티비티가 중지 혹은 정지 상태일 경우, 해당 프로세스가 메모리에서 제거될 수 있음. 사용자에게 다시 보여질 때 이전 상태로 복구 액티비티는 액티비티 스택(activity stack)을 통해 관리 액티비티는 사용자와 상호 작용하는 단위이며 일반적으로 전체 화면을 차지

액티비티 상태와 생명주기 액티비티의 3가지 상태 활성(active) 혹은 실행(running) 상태 중지(paused) 상태 전경 화면에 있을 경우 해당 액티비티가 사용자 동작에 대한 초점을 가짐 사용자와 상호 작용 가능 중지(paused) 상태 초점를 보유하지 않았지만 사용자에게 일부 보임 메모리가 극도로 부족할 경우 시스템에 의하여 강제 종료 사용자와 상호 작용 불가 정지(stopped) 상태 사용자에게 전혀 보이지 않지만 여전히 모든 상태와 멤버 정보는 유지 다른 컴포넌트가 메모리를 요청하면 시스템에 의하여 강제 종료

액티비티 상태와 생명주기 액티비티를 위한 메소드

액티비티 상태와 생명주기 액티비티를 위한 콜백 메소드 onCreate() onStart() onResume() 액티비티가 생성될 때 처음으로 호출되는 메소드 전역 상태의 모든 리소스를 초기화. 예) layout과 data binding 등 액티비티는 기본적으로 버튼, 리스트, 체크박스, 입력 표시줄 등과 같은 위젯들이 배치되어 있는 레이아웃을 구성하고, 웨젯들이 사용자와 상호작용을 하는 코드를 포함 onStart() 액티비티가 초기화 과정을 마친 후 사용자에게 보여줄 준비가 되었을 때 호출 onResume() 액티비티가 사용자에게 보여지고 사용자의 입력을 처리할 수 있음 액티비티 스택의 최상위에 위치

액티비티 상태와 생명주기 액티비티를 위한 콜백 메소드 onPause() onStop() onDestory() 절전 상태 혹은 새로운 액티비티가 시작될 경우 초점 상실 재개(resume)되기 전 데이터 저장, 애니메이션 중지, 프로세서를 소비하는 작업 중단 onStop() 더 이상 액티비티가 사용자에게 보이지 않음 더 이상 액티비티 스택의 최상위에 위치하지 않음 onDestory() 존재하는 모든 리소스를 해제 시스템 내에 액티비티가 존재하지 않게 됨

액티비티 상태와 생명주기 액티비티 상태 저장하기 일반적으로 정지된 액티비티는 사용자가 다시 사용할 것을 대비하여 메모리에 상주. 만약 메모리가 부족하게 되면 강제 종료 액티비티를 다시 호출하면, 강제 종료된 상태: 다시 액티비티를 생성한 후 액티비티를 실행 강제 종료되지 않은 상태: 액티비티를 다시 만들 필요가 없고 액티비티를 다시 시작하여 화면에 표시 액티비티가 중지되는 것은, 화면에 표시되지 않음 사용자와 상호작용 하지 않음 현재 액티비티의 상태를 Bundle 형태로 저장  사용자가 텍스트 등을 입력하다가 액티비티가 종료될 경우 작업 내용이 날아가는 것을 방지함 새로 액티비티가 시작할 경우 Bundle 객체는 null 활성 상태로 변할 때 저장된 UI 상태를 복원

액티비티 상태와 생명주기 액티비티 상태 저장하기 onSaveInstanceState() onPause() 혹은 onStop() 이후 메모리가 부족할 경우 프로세스가 메모리에서 제거될 수 있음 메모리에서 제거되기 전 액티비티 상태를 저장 매개변수로 액티비티의 동적 상태를 기록할 수 있는 번들(Bundle) 오브젝트를 가짐 onRestoreInstanceState() onCreate() 혹은 onStart() 이후 저장된 액티비티 상태를 복원 onSaveInstanceState()와 onRestoreInstanceState()는 생명주기 메소드가 아니기 때문에 항상 호출되지 않음. 개발자가 해당 코드의 메소드를 재정의하여 구현 매개변수로 사용되는 savedInstanceState는 저장된 인스턴스의 상태, 즉 액티비티의 UI 상태를 의미

리소스 이해

개요 리소스란? 애플리케이션 = 기능 + 리소스 기능은 애플리케이션 실행에 관계되는 모든 알고리즘을 포함하는 코드 리소스는 애플리케이션이 사용하는 자산 텍스트 문자열, 이미지, 아이콘, 오디오, 동영상 등 레이아웃 리소스를 소스 코드와 분리시 장점 유지 보수 용이 언어와 문화권에 맞는 애플리케이션의 현지화(localization) 가능

개요 리소스 저장 리소스는 Java 소스 코드와 별도로 외부 파일에 저장 리소스 파일은 대부분 XML 파일로 저장 이미지와 같은 원본 자료 파일은 그 자체로 저장 모든 리소스는 ~/res 디렉토리의 하위 디렉토리에 저장되며, 하위 디렉토리 이름은 소문자+숫자+밑줄로만 구성 여기서 ~는 프로젝트의 홈 디렉토리 그래픽 및 애니메이션 파일 등 일부 리소스 파일은 파일 이름과 동일한 이름의 변수로 참조되기 때문에 Java 식별자 형태의 파일 이름으로 명명 같은 형식의 리소스는 동일한 하위 디렉토리에 저장 자동 생성되는 리소스 디렉토리: drawable, layout, values aapt(Android Asset Packaging Tool)가 리소스를 모두 파악하여 자원을 접근하기 위한 변수의 정의를 담은 ~/gen/R.java 파일을 생성

개요 리소스 형식과 파일 이름 리소스 형식 디렉토리 권장 파일 이름 엘리먼트 이름 문자열 values strings.xml 문자열 배열 arrays.xml <string-array> 색상 값 colors.xml <color> 크기 dimens.xml <dimen> 단순 표시 drawables.xml <drawable> 스타일 및 테마 styles.xml, themes.xml <style> 그래픽 drawable 애니메이션 anim <set>, <alpha>, <scale> 등 메뉴 menu <menu> XML xml 원본 raw 레이아웃 layout

리소스 접근 코드에서 문자열 참조 R.java 파일에 정의된 R 클래스와 하위 클래스를 이용 예) hello라는 문자열을 접근하려면 getResource(): 리소스를 대표하는 Resources 객체를 반환 getString(): 인수로 주어진 리소스 식별자에 해당하는 문자열의 실제 값을 반환 R.string.hello는 R 클래스의 하위 클래스 string에 있는 멤버 변수 hello을 참조 String myString = getResources().getString(R.string.hello); <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Android!</string> <string name="app_name">Android</string> </resources>

리소스 접근 코드에서 문자열 배열 참조 문자열 배열 fruits의 접근 문자열 배열 리소스 파일(~/res/values/arrays.xml) String[] fruits = getResources().getStringArray(R.array.fruits); <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name=“fruits"> <item>apple</item> <item>banana</item> </string-array> <string-array name=“animal“> <item>tiger</item> <item>lion</item> </resources>

리소스 접근 코드에서 색상 참조 문자열 배열 textColor의 접근 색상 리소스 파일(~/res/values/colors.xml) int myColor = getResources().getColor(R.color.textColor); <?xml version="1.0" encoding="utf-8"?> <resources> <color name=“backgroundColor">#006600</color> <color name=“textColor">#ffeecc</color> </resources>

리소스 접근 코드에서 크기 참조 텍스트 크기 참조를 위한 textPointSize의 접근 리소스 파일(~/res/values/dimens.xml) float myTextSize = getResources().getDimension(R.dimen.textPointSize); <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name=“smallSize">6pt</dimen> <dimen name=“textPointSize“>11pt</dimen> <dimen name=“largeSize">20pt</dimen> </resources>

리소스 접근 코드에서 레이아웃 참조 레이아웃 내부에 정의된 ImageView01의 접근 레이아웃 파일(~/res/layout/main.xml) ImageView iv = (ImageView)findViewById(R.id.ImageView01); <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff"> <ImageView android:id=“@+id/ImageView01” android:layout_width="fill_parent“ … </LibearLayout>

리소스 접근 코드에서 이미지 참조 ~/res/drawable 디렉토리에 추가한 flag.png 파일 접근 레이아웃 파일(~/res/layout/main.xml) ImageView iv = (ImageView)findViewById(R.id.ImageView01); iv.setImageResource(R.drawable.flag) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff"> <ImageView android:id=“@+id/ImageView01” android:layout_width="fill_parent“ … </LibearLayout>

리소스 접근 리소스에서 리소스 참조 참조 방법 예) 애플리케이션 이름을 hello 문자열과 동일하게 하는 경우: strings.xml을 수정 @[패키지이름:]리소스형식/리소스이름 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, ColorSize!</string> <string name="app_name">@string/hello</string> </resources>

리소스 접근 시스템 리소스 참조 android.R의 하위 클래스에는 다양한 시스템 리소스 보유 참조 방법 표준 시스템 색상 시스템 스타일과 테마 애플리케이션 프로그램 섬네일(thumbnail) 이미지와 아이콘 오류 문자열과 표준 버튼 텍스트 페이드인/아웃을 위한 애니메이션 시퀀스 … 참조 방법 코드에서 참조: R 대신 android.R 리소스에서 참조: 패키지 이름으로 android 사용

리소스 접근 선택적 리소스 애플리케이션의 현지화 가능 선택적 리소스를 위한 수식어 리소스와 참조 리소스: MyApp/res/drawable-mdpi/myImage.png 코드: R.drawable.myImage XML: @drawable/myImage 수식어 내용 언어 kr(한글), en(영어), fr(불어) 등 화면 크기 small, normal, large 화면 방향 port(세로), land(가로) 화면 픽셀 밀도 ldpi(120dpi), mdpi(160dpi), hdpi(240dpi)