12 주차 인텐트

Similar documents
Microsoft PowerPoint App Fundamentals[Part2].pptx

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

Activity

Daum 카페

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

슬라이드 1

어댑터뷰

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

( )부록

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

학습내용 1. SDK, JDK, 이클립스, AVD의개념 2. 프로그래밍환경수립및설정 3. 예제프로그램수행방법 4. 액티비티생명주기

13ÀåÃß°¡ºÐ

gnu-lee-oop-kor-lec06-3-chap7

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

01장

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

슬라이드 1

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

슬라이드 1

THE TITLE

1부

슬라이드 1

구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자.

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint App Fundamentals[Part1].pptx

PowerPoint Template

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

리니어레이아웃 - 2 -

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

오버라이딩 (Overriding)

제11장 프로세스와 쓰레드

슬라이드 1

gnu-lee-oop-kor-lec10-1-chap10

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

PowerPoint Presentation

50_1953.pdf

C++ Programming

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

변수이름 변수값 PATH ;C:\Program Files\Java\jdk1.8.0_45\bin CLASSPATH.;C:\Program Files\jdk1.8.0_45\lib\tools.jar JAVA_HOME C:\Program Files\Java\jdk1.8.0_45

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0)

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint 프레젠테이션

Microsoft Word - PLC제어응용-2차시.doc

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

PowerPoint Presentation

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Design Issues

Chap 8 호스트시스템개발환경구성및 안드로이드개발환경구축

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - 15주차(최종).pptx

2_안드로이드UI

Microsoft PowerPoint - CSharp-10-예외처리

슬라이드 1

JUNIT 실습및발표

슬라이드 1

17장 클래스와 메소드

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

<4D F736F F F696E74202D205BC3D6C1BE5D3133C1D6C2F720B8AEBDBAC6AEBAE420B0ADC0C7C0DAB7E12D >

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

03장

#한국사문제7회4급

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

JAVA PROGRAMMING 실습 09. 예외처리

12Àå PDF

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1

PowerPoint Template

Network Programming

PowerPoint Presentation

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

콘텐츠 PowerPoint 디자인

Microsoft PowerPoint - Java7.pptx

안드로이드2_14

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

1) 리눅스커널 메모리관리, 프로세스관리, 파일시스템관리, 네트워크스택등하드웨어지원 2) Native 라이브러리 (C, C++) 안드로이드프레임워크에서필요한 C 와 C++ 라이브러리 3) 안드로이드런타임 코어라이브러리지원, Dalvik Virtual Machine 으로

XML Parser

슬라이드 1

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

07( ) CPLV12-35.hwp

// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c

Folie 1

PowerPoint 프레젠테이션

rosaec_workshop_talk

Chapter #01 Subject

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Transcription:

12 주차 인텐트

학습내용 1. 서브액티비티 2. 인텐트 3. 액티비티의생명주기

서브액티비티

액티비티 액티비티개요 - 안드로이드응용프로그램을구성하는주요콤포넌트의하나이며, 각예제마다하나씩액티비티를만들었는데각예제의화면하나가바로액티비티임

액티비티 액티비티개요 - 윈도우와유사한개념이지만 하나의화면 이라고이해하는것이옳음 - 즉, 액티비티는사용자와상호작용할수있는하나의윈도우라고생각하면옳음

액티비티 액티비티개요 - 사용자와의인터페이스를구성하지만그자체는출력기능이없으므로직접적으로보이지않음

액티비티 액티비티와 View - 사용자눈에실제로보이는것은 View 이며, 액티비티는반드시내부에 View 나 View 그룹을가져야함 - 액티비티가생성될때마다호출되는 setcontentview 메소드가액티비티안에 View 를배치하는명령임

액티비티 실제응용프로그램 - 실제응용프로그램에서는한화면에서복잡한동작을다수행할수없으므로기능별로작업을실행할수있는여러개의액티비티가필요함 - 또한여러개의액티비티를생성하였기때문에액티비티간에통신할수있는방법이필요함

예제 1. 액티비티 - 메인액티비티 에서 서브액티비티 를호출할수있는장치가있어야하므로 Button 을하나배치하고 메인액티비티 라는것을표시하기위한문자열도하나배치함

액티비티 예제 1. CALLactivity.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text= Main Activity android:typeface= serif" android:textcolor= #0100FF android:textsize= 25sp" />

액티비티 예제 1. CALLactivity.xml <Button android:id="@+id/call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="monclick" android:text="call" /> </LinearLayout>

예제 1. 액티비티 - CALLactivity.xml 파일 ( 새로만든실습프로젝트라면 activity_main.xml) 을작성하여레이아웃을정의함 - MainActivity 라는설명문자열과 CALL Button 만배치함

액티비티 예제 1. subactivity.xml - 레이아웃을정의하는 XML 문서하나와동작을정의하는 java 파일이작성되어야액티비티하나가정의됨

액티비티 예제 1. subactivity.xml - 따라서 res/layout 폴더에 subactivity.xml 파일을만들고메인액티비티와마찬가지로 TextView 와 Button 을하나씩배치함

액티비티 예제 1. subactivity.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text= Sub Activity android:typeface= serif android:textcolor="#ff5e00" android:textsize= 25sp" />

액티비티 예제 1. subactivity.xml <Button android:id="@+id/close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="monclick" android:text="close" /> </LinearLayout>

액티비티 예제 1. subactivity.xml - TextView 는서브액티비티라는것을표시하고 Button 은종료명령을수행함 - 서브액티비티를위한코드는 SubActivity.java 라는이름으로소스코드를작성함

액티비티 예제 1. SubActivity.java package exam.callactivity; import android.app.*; import android.content.*; import android.os.*; import android.view.*; import android.widget.*; public class SubActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.subactivity); } } public void monclick(view v) { finish(); }

액티비티 예제 1. SubActivity.java - 액티비티이므로당연히 Activity 클래스로부터상속을받으며 oncreate 를재정의하고 super.oncreate 까지호출하여기본적인초기화를수행해야함

액티비티 예제 1. SubActivity.java - 이후의초기화를위해 setcontentview 메소드를호출하여액티비티안에 View 나 View 그룹을채움

액티비티 예제 1. SubActivity.java - 앞에서정의해놓은 subactivity 레이아웃을채웠으며 Button 의클릭이벤트에서 finish 메소드를호출하여액티비티를종료함

액티비티 예제 1. - CallActivity.java - 호출될액티비티가준비 (Subactivity.java, subactivity.xml 의작성 ) 되었으며, 메인에서 CALL 버튼을누를때서브액티비티를호출할수있음

액티비티 예제 1. - CallActivity.java - CALL 버튼의클릭이벤트핸들러에액티비티호출문을작성함

액티비티 예제 1. - CallActivity.java package exam.callactivity; import android.app.*; import android.os.*; import android.widget.*; import android.content.*; import android.view.*; public class CallActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.callactivity); }

액티비티 예제 1. - CallActivity.java } public void monclick(view v) { Intent intent = new Intent(this, SubActivity.class); startactivity(intent); }

예제 1. 액티비티 - 액티비티를호출할때는 startactivity 메소드를사용하며, 호출할대상을지정하는 Intent 객체는 startactivity 의인수로전달됨 - 모든코드가다구현되었으므로 CALL 버튼을누르면 서브액티비티 는아직동작하지않음

액티비티 예제 1. 에러결과화면 - 메인액티비티 에서 CALL 버튼을누르면다음과같은예외가발생하며다운되어버릴것임

액티비티 예제 1. 에러결과화면

예제 1. 액티비티 - 보안상의이유로응용프로그램에포함된모든액티비티는반드시매니페스트파일에등록되어야함

예제 1. 액티비티 - 매니페스트파일에등록되지않은액티비티는존재하지않는것으로취급되므로 startactivity 메소드가 SubActivity 를찾지못하는것임

액티비티 예제 1. AndroidManifest.xml - 매니페스트파일에 subactivity 를등록함 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="exam.firstactivity" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="16" android:targetsdkversion="16" />

액티비티 예제 1. AndroidManifest.xml <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="exam.callactivity.callactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter>

액티비티 예제 1. AndroidManifest.xml </activity> <activity android:name=.subactivity android:label= SubActivity" /> </application> </manifest>

예제 1. 액티비티 - 액티비티의이름과타이틀바에표시할제목은최소한지정해야함 - 액티비티의이름은패키지명을포함한전체경로로지정하며같은패키지에속해있을때는앞에. 을찍음

예제 1. 액티비티 - 인텐트필터나권한등에대한여러가지지정을더포함할수있음

액티비티 예제 1. 결과화면

예제 1. 액티비티 - 최초메인액티비티가실행됨 - 메인화면에서 CALL 버튼을누르면서브액티비티가호출됨 - 메인액티비티위에새로운액티비티가추가로열린상태임

예제 1. 액티비티 - 화면의 CLOSE 버튼을누르거나장비의 Back 버튼을누르면서브액티비티가종료되고메인액티비티로다시돌아감

액티비티 서브액티비티절차 - 액티비티를새로추가하는절차 1 새로만들서브액티비티의레이아웃을 XML 파일에정의함 2 새로만들서브액티비티에서실행될코드를 java 파일로작성함 3 새로추가한서브액티비티를매니페스트에등록함 4 메인액티비티에서 startactivity 메소드로서브액티비티를호출함

인텐트

인텐트 인텐트 (Intent) - 액티비티끼리서로호출하기위해필요한 통신장치 혹은 메시지전달방법

인텐트 인텐트 (Intent) - 인텐트는액티비티뿐만아니라서비스, CP(Content Provider), BR(Broadcast Receiver) 등의콤포넌트들이수행해야할작업에대한정보를가지며작업결과를돌려주기위해서도사용됨

인텐트 인텐트예 ) - 그림을보여주는액티비티를호출한다면출력해야할그림이무엇인지를알려주어야함 - 입력을받는액티비티를호출한경우에는사용자가입력한정보가무엇인지반환해야함

인텐트 인텐트예 ) - 함수의인수나반환값과유사하게사용됨

인텐트 액티비티호출 - 액티비티를호출하는메소드 void startactivity (Intent intent) - 인텐트하나만을인수로취하는데인텐트안에호출상대, 요청작업에대한정보가들어있음

인텐트 액티비티호출 - 액티비티를호출하기전에요청작업에대한정보를인텐트객체에먼저정의해야함

인텐트 인텐트생성자 Intent (Context packagecontext, Class<?> cls) Intent (String action, Uri uri, Context packagecontext, Class<?> cls) - 내부의서브액티비티를호출할때주로사용하는첫번째생성자 - 액티비티클래스를구현하는콘텍스트와호출될액티비티의클래스정보가인수로전달됨

인텐트 인텐트생성자 - 콘텍스트는호출자의정보인데주로 this 이며 cls 는호출되는액티비티의클래스정보임 - 실행중에액티비티를생성해야하므로클래스정보가필요함

호출문 인텐트 Intent intent = new Intent(CallActivity.this, SubActivity.class); startactivity(intent); - 호출자는메인액티비티자신이고 SubActivity 를호출한다는뜻임

호출문 인텐트 - startactivity 메소드는인텐트의정보를참조하여 CallActivity 를부모로하는 SubActivity 를호출함

인텐트 명시적인텐트 - 인텐트에호출할대상콤포넌트가분명히명시되어있는것을명시적인텐트 (Explicit intent) 라고함

인텐트 명시적인텐트 - 같은응용프로그램내의서브액티비티를호출할때사용하며, 권한만있다면외부응용프로그램의액티비티도호출할수있음

인텐트 암시적인텐트 - 호출대상이분명히정해지지않은인텐트를암시적인텐트 (Implicit intent) 라고함 - 주로다른응용프로그램의콤포넌트를호출할때사용됨

인텐트 암시적인텐트 - 운영체제에는인텐트의정보를참조하여호출할콤포넌트를검색하는알고리즘이작성되어있으며시스템은적절한콤포넌트를찾기위해설치된모든응용프로그램의콤포넌트를조사함

인텐트 인텐트 (Intent) (= 의도 ) - 의도를명확히하기위해여러가지정보들 (Action, Data, Type, Category, Component 등 ) 이포함됨 - 이정보들을생성자로전달하여초기화할수도있지만객체를생성한후메소드로변경하거나조사할수도있음

Action 인텐트 - 프로그래머가실행하고자하는동작을의미하며, 인텐트를통한수행작업을지정함 - BR 콤포넌트는발생사건에대한정보를알려줌

인텐트 Action 값 액션대상설명 ACTION_CALL 액티비티통화를시작한다. ACTION_EDIT 액티비티데이터를표시하고편집한다. ACTION_MAIN 액티비티 ACTION_VIEW 액티비티뭔가를보여준다. ACTION_DIAL 액티비티전화를건다. ACTION_BATTERY_LOW BR 배터리가부족하다. 메인액티비티를실행한다. 입출력되는데이터는없다. ACTION_HEADSET_PLUG BR 헤드셋이장비에접속되거나분리되었다. ACTION_SCREEN_ON BR 화면이켜졌다. ACTION_TIMEZONE_CHANGED BR 타임존이변경되었다.

Action 인텐트 - 시스템이미리정의해놓은동작을사용할수도있고사용자가임의의동작을정의할수도있음 - Action 의종류가다양하여정수타입이아니라문자열타입으로정의되어있음

Action 인텐트 - Action 을조사하거나변경할때는 getaction, setaction 메소드를사용함

Data 인텐트 - Action 에필요한상세데이터를제공함 - 단독 Action 의경우는별도의 Data 가필요없지만대부분의 Action 은수행작업에대한정보가필요하며 Data 로지정함

Data 인텐트 - 예 ) ACTION_EDIT 액션에대해서는 어떤파일을편집할것인지 를지정해야하며, ACTION_CALL 액션에대해서는 누구에게전화를걸것 인가를 지정해야함

Data 인텐트 - Action 의목적이되는대상은광범위하기때문에, 임의의대상을유일하게가리킬수있는 URI 타입으로되어있음

Data 인텐트 - URI 는웹사이트주소인 URL, 로컬저장장치의파일경로, 주소록의레코드하나까지도유일하게지정할수있는범용적인포맷이므로데이터로전달하기에적합함

Data 인텐트 - Data 를액세스할때는 getdata, setdata 메소드를사용함

인텐트 Action 과 Data - Action 과 Data 정보는 ~ 에대한 ~ 동작 까지를지정할수있으므로대개의경우는이두정보만으로도대상콤포넌트를찾을수있음

인텐트 Action 과 Data - 정확하고상세한처리를위해추가적인정보가더필요한경우 : Action 을처리할수있는적합한콤포넌트가둘이상이거나데이터의타입이애매한경우 Type, Category, Component, Extras 정보들도가급적상세하게지정해야함

Type 인텐트 - 데이터의타입은대개의경우자동으로판별가능함 - 예 ) http://~ 으로시작하면웹페이지를의미하며, tel:~ 으로시작하면전화번호라는뜻임

Type 인텐트 - 모든경우에 Type 판별이완벽하게수행되는것은아님 ( 확장자가 jpg 이지만실제로는 png 포맷일수도있고아예확장자가없는경우도있음 )

Type 인텐트 - Type 이애매하거나자동판별을신뢰할수없는경우라면 gettype, settype 메소드로데이터의 MIME 타입을직접지정해야함

Type 인텐트 - 호출자가 Type 을직접지정하면운영체제는더이상자동판별을시도하지않고지정된타입을따름

인텐트 Category - 실행할액션에대한좀더추가적인상세정보를제공함 - 추가정보이므로여러개를동시에지정할수도있음

인텐트 Category - addcategory 메소드는 Category 를추가하고 removecategory 는 Category 를제거함

인텐트 Component - 인텐트를처리할 Component 를명시적으로지정함 - 이속성이지정되면명시적인텐트가되므로다른정보들은더이상참조하지않음

액티비티의생명주기

액티비티의생명주기 안드로이드멀티태스킹 - 안드로이드는멀티태스킹을지원하므로여러개의응용프로그램을동시에실행할수있음 - 그러나데스크톱환경과는달리자원이넉넉하지않으므로여러가지제약이따름

액티비티의생명주기 안드로이드멀티태스킹 - 특히메모리가적어많은프로그램을동시에실행하기에는무리가있음 - 또한화면이좁기때문에여러개의프로그램을오버랩시켜놓고동시에사용할수는없으며한번에하나의프로그램만보임

액티비티의생명주기 생명주기 (Life Cycle) - 여러개의프로그램을동시에실행할수는있지만사용자눈에보이고직접사용하는프로그램은언제나하나임 - 대신사용자는배경의프로그램을활성화함으로써교대로실행할수있음

액티비티의생명주기 생명주기 (Life Cycle) - 액티비티는시작, 실행, 활성, 비활성화, 정지, 종료되는일련의상태를순환하는데이것을생명주기라고함 - 사용자의선택이나시스템의자원사정에따라액티비티의상태는끊임없이바뀜

액티비티의생명주기 액티비티관리 - 시스템은태스크의실행중인액티비티들을스택으로관리함 - 액티비티가새로생성되면스택의제일위에놓여활성화됨

액티비티의생명주기 액티비티관리 - 이상태에서다른액티비티가또생성되면기존액티비티는잠시가려지고새액티비티가스택의제일위에배치됨

액티비티의생명주기 액티비티관리 - 스택제일위의액티비티가종료되면바로아래쪽에있는액티비티가자연스럽게활성화될것임

액티비티의생명주기 액티비티관리 - 스택의액티비티는넣고빼기만할뿐순서가바뀌지는않음 - 스택상의액티비티는다음세가지상태중의하나임 실행 (active, running) 일시정지 (pause) 정지 (stopped)

액티비티의생명주기 실행상태 (active, running) - 사용자가직접사용하는상태임 - 스택의제일위에있으며화면상에서도역시제일위에있음 - 입력포커스를가지며사용자의입력을직접처리함

액티비티의생명주기 일시정지상태 (pause) - 포커스는잃었지만사용자에게는보이는상태임 - 위쪽에다른액티비티가있지만화면전체를다가리지않았거나반투명한경우가이에해당함

액티비티의생명주기 일시정지상태 (pause) - 살아있는상태와같지만시스템에의해강제종료될수도있음

액티비티의생명주기 정지상태 (stopped) - 다른액티비티에의해완전히가려진상태이며사용자눈에보이지는않음 - 그러나모든정보를다유지하고있으므로언제든지다시활성화될수있음

액티비티의생명주기 정지상태 (stopped) - 시스템은메모리가부족하면정지상태의액티비티를언제든지강제종료할수있음

액티비티의생명주기 액티비티의생명주기 시작 oncreate() 액티비티가다시선택될때 onrestart() onstart() 액티비티가다시선택될때 화면의뒤로갈때 onresume() 실행 onpause() onstop() 다른액티비티가포그라운드가될때 강제종료 우선순위가더높은앱이메모리를필요로할때 ondestory() 종료

액티비티의생명주기 액티비티생명주기 - 액티비티는처음생성되어완전히파괴될때까지앞그림의메소드들을순서대로거침

액티비티의생명주기 액티비티생명주기 - 일부는생략될수도있고활성화상태가자주바뀌면 onpause 와 onresume 은여러번호출되기도함

액티비티의생명주기 액티비티상태메소드 메소드 oncreate 해야할일 액티비티를초기화한다. 중지했다가재시작하는경우라면액티비티의이전상태정보인 Bundle 이전달된다. 이정보대로재초기화한다. onrestart 재시작될때호출된다. 특별히할일은없다. onstart 액티비티가사용자에게보이기직전에호출된다. onresume 사용자와상호작용을하기직전에호출된다. 이단계에서스택의제일위로올라간다. onpause 다른액티비티가실행될때호출된다. 이단계에서미저장한데이터가있으면저장하고애니메이션은중지해야한다. 이메소드가리턴되어야새액티비티가활성화되므로시간을너무많이끌어서는안된다. onstop 액티비티가사용자에게보이지않게될때호출된다. ondestroy 액티비티가파괴될때호출된다. 시스템에의해강제로종료되는것인지아니면 finish 메소드호출에의해스스로종료하는것인지는 isfinishing 메소드로조사할수있다.

예제참고문헌 본교재의예제는저자의허락을받아 [ 안드로이드프로그래밍정복, 한빛미디어,, 김상형저 ] 에서가져왔습니다.

학습개요 ü 액티비티를추가하는방법에대해학습한다. ü 인텐트의개념과속성및실행방법에대해학습한다.

학습개요 ü 액티비티의생명주기에대해학습한 다.

학습목표 ü 액티비티추가하는방법이해 ü 인텐트실행방법이해 ü 액티비티의생명주기이해

주요용어 ü 액티비티 : 안드로이드응용프로그 램을구성하는주요콤포넌트의하나

주요용어 ü 인텐트 : 액티비티끼리서로호출하 기위해필요한통신을위한장치혹은 메시지전달방법

주요용어 ü 생명주기 : 액티비티의시작, 실행, 활성, 비활성화, 정지, 종료되는일련의 상태를순환하는것

학습정리 ü 추가액티비티 : 메인액티비티 에서 서브액티비티 를호출하기위해서는매니페스트파일에반드시등록해야함

학습정리 ü 인텐트 : 액티비티, 서비스, CP, BR 등의콤포넌트들이수행해야할작업에 대한정보를가지며작업결과를돌려 주기위해서도사용됨 Intent (Context packagecontext, Class<?> cls) Intent (String action, Uri uri, Context packagecontext, Class<?> cls)

학습정리 ü 액티비티의생명주기 : 액티비티는처음생성되어완전히파괴될때까지시작, 실행, 활성, 비활성화, 정지, 종료되는일련의상태를거침