Top Banner
NHN NEXT Eunjoo Im Android Launch Mode N H N N E X T Android Advanced
15

안드로이드 Activity Launch mode

Apr 14, 2017

Download

Technology

Eunjoo Im
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

A n d r o i d

L a u n c h

M o d e

N H N N E X T

A n d r o i d A d v a n c e d

Page 2: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

Launch Mode란?

Activity가 Launch되는형식을정의

Intent의 Activity flag나Manifest의 Activity 태그에서정의

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

<activity android:launchMode = "standard" ../>

4가지모드 standard (default)

singleTop

singleTask

singleInstance

Page 3: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

LaunchMode구분

사용목적 모드 다수 instance 설명

대부분 Activity일반적 사용

"standard" O기본 설정. target task에 새로운 Activity 인스턴스를 생성하고 intent를 보냄, stack 어디든 놓일 수있음

"singleTop" O(조건부)

standard와 동일하나 단 Activity의 인스턴스가 이미 target task의 최상단에 존재한다면, 새 인스턴스를 만드는 대신 onNewIntent()를 통해 기존 인스턴스에 인텐트를 보냄 (= 재사용)

특별한 경우(일반 사용에는

비권장)

"singleTask" X

새 task의 루트에 Activity를 생성하고 인텐트를 보냄. 단 Activity가 이미 존재하는 경우, 새 인스턴스를 만드는 대신 onNewIntent()를 통해 인텐트를 보냄

"singleInstance" X singleTask와 마찬가지로 동작하나 한 태스크 안에는 하나의 유일한 Activity만 허용

표 (영어원문) 출처: http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

Page 4: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

standard

Activity를여러번인스턴스화할수있음

한 task에여러개의인스턴스를가질수있음

스택의어느곳에도놓일수있음

FLAG_ACTIVITY_NEW_TASK 플래그가없는경우 task에서 startActivity() 호출시마다새로생성되어stack에쌓임

FLAG_ACTIVITY_NEW_TASK 플래그가있는경우새task를시작해서스택의최상단에생성

Page 5: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

standard

<같은 application에서 standard로 instance 생성>

Lollipop 미만 Lollipop 이후

<다른 application에서standard로 instance 생성>

task manager에서하나의탭에보임

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

task manager에서별도의탭으로분리

Page 6: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTop

Activity를여러번인스턴스화할수있음

한 task에여러개의인스턴스를가질수있음

스택의어느곳에도놓일수있음

FLAG_ACTIVITY_NEW_TASK 플래그가없는경우 task에서 startActivity() 호출시마다새로생성되어stack에쌓임

Target task의최상단에동일 Activity instance가존재하면새 instance를생성하지않고최상단instance 재사용

onPause() -> onNewIntent() -> onResume()

standard와동일

Page 7: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTop

Target task의최상단에동일 Activity instance가존재하면새 instance를생성하지않고최상단 instance 재사용

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Page 8: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTask

Activity를여러번인스턴스화할수없음 (유일한instance)

Task를시작하며 stack의최상단에위치

일반적인경우의사용을권장하지않음

다른 activity들이 instance 위에쌓일수있음

Page 9: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTask

<같은 application에서 singleTask로 instance 생성>

singTask로생성된 instance가없을경우 stack의최상단에위치

singleTask로생성된 instance가있을경우삭제하고 stack의최상단에위치

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Page 10: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTask

기술문서의설명대로작동하려면아래옵션을줘야함

<activityandroid:name=".SingleTaskActivity"android:label="singleTask launchMode"android:launchMode="singleTask"android:taskAffinity="">

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Page 11: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTop

Activity를여러번인스턴스화할수없음 (유일한instance)

Task를시작하며 stack의최상단에위치

일반적인경우의사용을권장하지않음

다른 activity들이 instance 위에쌓일수없음= task 내의유일한 instance

singleTask와동일

Page 12: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTop이미 instance들이있는 task에서 singleTop으로 instance 생성시

새로운 task가생성되면서 instance 생성됨(기존 instance들로는 back 버튼으로돌아갈수없고

Task Manager 상에도나타나지않음)

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

?

Page 13: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

singleTop

출처: http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

기술문서의설명대로작동하려면아래옵션을줘야함

<activityandroid:name=".SingleInstanceActivity"android:label="singleInstance launchMode"android:launchMode="singleInstance"android:taskAffinity="">

Page 14: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

참고자료

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

Android Developers

http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance

http://aroundck.tistory.com/63

[Android/안드로이드] Manifest Activity 태그의 launchMode 에대해들어보셨나요?

Page 15: 안드로이드 Activity Launch mode

NHN NEXT Eunjoo Im

ThankYou