SlideShare a Scribd company logo
1 of 10
Activity간 호출 및 Intent
기본적인 Activity 호출
다른 Activity를 시작하라고~
단 나는 잊어버리고~
갈 땐 가더라도,
어디로 어떻게 갈거구.
새로 가는 곳 주인장에게 전해줄 것 좀 챙겨줄께
Intent .. 구조 An intent is an abstract description of an operation to be performed
기본 구조는 Action과 Data로 구성
• Action: 어떤 operation이 이루어지면 좋겠다는 것을 규정
• Data: operation이 수행되는데 참고되었으면 하는 데이터에 대한 URI
예) ACTION_VIEW | content://contacts/people/1
1이라는 값으로 규정이 되는 People에 대한 정보를 보여주라는 Intent
이렇게 정의되는 기본 Intent에 대해서는 Intent-filter로 상징되는 intent resolution을 통해서 처리가 되
어가게 됩니다. 이에 대해서는 추가로 알아가도록 합니다.
위 기본 정보 외에 다음 정보들을 포함
• Category: 수행되는 Action에 대한 추가 정보. 예) CATEGORY_LAUNCHER
• Type: intent data가 가지는 mime 타입 정보. 예) image/jpeg
• Extras: 추가적인 정보들의 묶음(bundle).
• Flags: 수행될 때, 참조가 될 수 있는 일정 패턴들에 대한 정의값.
예) FLAG_ACTIVITY_NO_HISTORY: UI 스택 상에서 사라지게 하기
명시적 호출
앞서 살펴본 기본 구조 외에 Component라는 것이 있습니다. 이는 명시적으로 선언이 되지 않으면
null로 설정이 됩니다. 그리고 이 값을 제외한 값들을 조합해서 Intent가 향해야 할 곳이 결정됩니
다. 이것이 바로 암묵적 호출 / intent filtering 입니다.
그러나 이 값이 명시적으로 지정되면, intent에 있는 다른 값들을 고려하지 않고 지정된
component에 의해서 Intent가 수행되게 됩니다. 이것이 명시적 호출이라고 불리는 방법입니다.
위와 같이 다른 Activity를 수행을 요청하고 마치는 경우가 있는가 하면,
추가적으로 새로이 수행이 되는 Activity에서 처리한 결과를 받고자 하는 경우가 있습니다. 이
러한 경우에 다음과 같은 함수를 사용합니다.
public void startActivityForResult (Intent intent, int requestCode)
intent: 새로이 수행될 operation에 대한 정보 담은 intent
requestCode: 현재 요청하는 요청을 인식할 수 있는 값. 여러 요청 보낼 수 있는 경우 대비
startActivityForResult
A activity B activity
startActivityForResult () + requestCode
onActivityResult(int requestCode, int resultCode, Intent intent)
setResult & finishExtra
단순히 화면으로 전환하고 마치는 것이 아니라,신규 화면이 동작을 마치고 전환 값을 받는 호출
활용 예) 사용자 가입을 할 때, 해당 사용자가 Valid한 사용자인지 확인하는 화면
B activity가 Crash가 발생될 때에는 resultCode 값이 RESULT_CANCELED 반환 됨.
startActivityForResult 코드 예
setResult 함수 통해서 data 전달 시에는 Intent를 담아서 전달
LifeCycle과 onActivityResult
A B
가. onClick
나. onActivityResult
A에서 startActivityForResult로 B를 호출 경우
A의 LifeCycle과 onActivityResult 순서 사이
1. A에서 버튼 onClick에서 B를 startActivityForResult
2. A.onPause
3. A.onStop
4. B에서 동작 마치고 finish 처리
5. A.onActivityResult 호출
6. A.onResume
위와 같은 순서로 A의 생명 주기가 호출됩니다.
Implicit Intent & Intent Filter
직접적으로 수행 대상을 규정하지 않고 처리 가능한 대상을 찾아서 수행하게 하는 것이 implicit intent 입니
다. 그런데 이런 방법을 왜 쓸까요?
다른 App을 활용할 수 있는 여지를 공개
지정된 특정 App만 처리할 수 있도록 하는 것이 아니, 처리 가능한 App들이 이를 처리할 수 있도록 공개하
는 용도. 예를 들어서 이미지를 보는 App을 선택해서 사용할 수 있도록 해주는 통로
Intent를 처리가 가능한 대상을 추출해 내는 과정을 intent resolving 과정이라고 하고, 이를 현재는
manifest 파일에 정의된 intent-filter를 통해서 수행하고 있습니다.
필터 기준
Intent filter 항목
+ data에 지정된 URI scheme 및 mimetype 정의 가능
implicit intent 호출 예

More Related Content

What's hot

파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
Yong Joon Moon
 
Gan (generative adversarial network)
Gan (generative adversarial network)Gan (generative adversarial network)
Gan (generative adversarial network)
soul8085
 

What's hot (10)

파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229
 
파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기
 
Gan (generative adversarial network)
Gan (generative adversarial network)Gan (generative adversarial network)
Gan (generative adversarial network)
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 

Similar to 04 activity간에 호출하기 & intent

안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
DaeHee Jang
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
NAVER D2
 

Similar to 04 activity간에 호출하기 & intent (13)

안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
 
Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조
 
Device driver
Device driverDevice driver
Device driver
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
(자마린안드로이드예제실습)현재 위치를 얻은 후 지도에 표시하기, GPS다루기, 마시멜로이후 권한 획득방법 구현_추천자마린학원/자마린교육
(자마린안드로이드예제실습)현재 위치를 얻은 후 지도에 표시하기, GPS다루기, 마시멜로이후 권한 획득방법 구현_추천자마린학원/자마린교육(자마린안드로이드예제실습)현재 위치를 얻은 후 지도에 표시하기, GPS다루기, 마시멜로이후 권한 획득방법 구현_추천자마린학원/자마린교육
(자마린안드로이드예제실습)현재 위치를 얻은 후 지도에 표시하기, GPS다루기, 마시멜로이후 권한 획득방법 구현_추천자마린학원/자마린교육
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
 
안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1
 
Tizen main loop 이해
Tizen main loop 이해Tizen main loop 이해
Tizen main loop 이해
 
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 

More from 운용 최

21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
운용 최
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task
운용 최
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상
운용 최
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기
운용 최
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db
운용 최
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용
운용 최
 
15 content provider
15 content provider15 content provider
15 content provider
운용 최
 
14 broad castreceiver
14 broad castreceiver14 broad castreceiver
14 broad castreceiver
운용 최
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더
운용 최
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드
운용 최
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change
운용 최
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout
운용 최
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
운용 최
 

More from 운용 최 (20)

Wot(daliworks) 20131113
Wot(daliworks) 20131113Wot(daliworks) 20131113
Wot(daliworks) 20131113
 
NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08
 
Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"
 
Uml intro 1
Uml intro 1Uml intro 1
Uml intro 1
 
Uml intro 0
Uml intro 0Uml intro 0
Uml intro 0
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용
 
15 content provider
15 content provider15 content provider
15 content provider
 
14 broad castreceiver
14 broad castreceiver14 broad castreceiver
14 broad castreceiver
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더
 
12 service
12 service12 service
12 service
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
 
08 font size
08 font size08 font size
08 font size
 

04 activity간에 호출하기 & intent

  • 2. 기본적인 Activity 호출 다른 Activity를 시작하라고~ 단 나는 잊어버리고~ 갈 땐 가더라도, 어디로 어떻게 갈거구. 새로 가는 곳 주인장에게 전해줄 것 좀 챙겨줄께
  • 3. Intent .. 구조 An intent is an abstract description of an operation to be performed 기본 구조는 Action과 Data로 구성 • Action: 어떤 operation이 이루어지면 좋겠다는 것을 규정 • Data: operation이 수행되는데 참고되었으면 하는 데이터에 대한 URI 예) ACTION_VIEW | content://contacts/people/1 1이라는 값으로 규정이 되는 People에 대한 정보를 보여주라는 Intent 이렇게 정의되는 기본 Intent에 대해서는 Intent-filter로 상징되는 intent resolution을 통해서 처리가 되 어가게 됩니다. 이에 대해서는 추가로 알아가도록 합니다. 위 기본 정보 외에 다음 정보들을 포함 • Category: 수행되는 Action에 대한 추가 정보. 예) CATEGORY_LAUNCHER • Type: intent data가 가지는 mime 타입 정보. 예) image/jpeg • Extras: 추가적인 정보들의 묶음(bundle). • Flags: 수행될 때, 참조가 될 수 있는 일정 패턴들에 대한 정의값. 예) FLAG_ACTIVITY_NO_HISTORY: UI 스택 상에서 사라지게 하기
  • 4. 명시적 호출 앞서 살펴본 기본 구조 외에 Component라는 것이 있습니다. 이는 명시적으로 선언이 되지 않으면 null로 설정이 됩니다. 그리고 이 값을 제외한 값들을 조합해서 Intent가 향해야 할 곳이 결정됩니 다. 이것이 바로 암묵적 호출 / intent filtering 입니다. 그러나 이 값이 명시적으로 지정되면, intent에 있는 다른 값들을 고려하지 않고 지정된 component에 의해서 Intent가 수행되게 됩니다. 이것이 명시적 호출이라고 불리는 방법입니다. 위와 같이 다른 Activity를 수행을 요청하고 마치는 경우가 있는가 하면, 추가적으로 새로이 수행이 되는 Activity에서 처리한 결과를 받고자 하는 경우가 있습니다. 이 러한 경우에 다음과 같은 함수를 사용합니다. public void startActivityForResult (Intent intent, int requestCode) intent: 새로이 수행될 operation에 대한 정보 담은 intent requestCode: 현재 요청하는 요청을 인식할 수 있는 값. 여러 요청 보낼 수 있는 경우 대비
  • 5. startActivityForResult A activity B activity startActivityForResult () + requestCode onActivityResult(int requestCode, int resultCode, Intent intent) setResult & finishExtra 단순히 화면으로 전환하고 마치는 것이 아니라,신규 화면이 동작을 마치고 전환 값을 받는 호출 활용 예) 사용자 가입을 할 때, 해당 사용자가 Valid한 사용자인지 확인하는 화면 B activity가 Crash가 발생될 때에는 resultCode 값이 RESULT_CANCELED 반환 됨.
  • 6. startActivityForResult 코드 예 setResult 함수 통해서 data 전달 시에는 Intent를 담아서 전달
  • 7. LifeCycle과 onActivityResult A B 가. onClick 나. onActivityResult A에서 startActivityForResult로 B를 호출 경우 A의 LifeCycle과 onActivityResult 순서 사이 1. A에서 버튼 onClick에서 B를 startActivityForResult 2. A.onPause 3. A.onStop 4. B에서 동작 마치고 finish 처리 5. A.onActivityResult 호출 6. A.onResume 위와 같은 순서로 A의 생명 주기가 호출됩니다.
  • 8. Implicit Intent & Intent Filter 직접적으로 수행 대상을 규정하지 않고 처리 가능한 대상을 찾아서 수행하게 하는 것이 implicit intent 입니 다. 그런데 이런 방법을 왜 쓸까요? 다른 App을 활용할 수 있는 여지를 공개 지정된 특정 App만 처리할 수 있도록 하는 것이 아니, 처리 가능한 App들이 이를 처리할 수 있도록 공개하 는 용도. 예를 들어서 이미지를 보는 App을 선택해서 사용할 수 있도록 해주는 통로 Intent를 처리가 가능한 대상을 추출해 내는 과정을 intent resolving 과정이라고 하고, 이를 현재는 manifest 파일에 정의된 intent-filter를 통해서 수행하고 있습니다. 필터 기준
  • 9. Intent filter 항목 + data에 지정된 URI scheme 및 mimetype 정의 가능