개발 창고/Android

[Android] How to use launchMode

로이제로 2023. 11. 24. 10:07
반응형

How to use launchMode

 Activity를 사용할 때, 가끔 드는 생각이 있습니다. 이 Activity는 한 번만 불러지는 걸까? 아니면 불러질 때마다 복사가 되는 걸까? Activity를 옮겨 다니다가(startActivity) 뒤로 가기 키(BackPressKey)를 누르면 이전 Activity는 어디를 가리킬까?

 

Launch Mode의 종류

Type Mode Description
일반적인 시작 standard Default.
다중 인스턴스 : Y
인텐트 호출 (ex. startActivity를 사용) 할 때마다 새로운 인스턴스를 생성 후 이동합니다.
일반적인 시작 singleTop 다중 인스턴스 : 조건부
인텐트 호출 시 기존에 호출되어 인스턴스가 존재한다면, onNewIntent() 메서드를 호출하여 기존 인스턴스로 이동합니다.
특수한 시작
(권장 x)
singleTask 다중 인스턴스 : 조건부
Task 단위로 singleTop과 동일하게 작동합니다.
특수한 시작
(권장 x)
singleInstance 다중 인스턴스 : N
"singleTask"와 동일하지만 시스템이 인스턴스를 보유한 작업으로는 어떤 다른 활동도 실행하지 않는다는 점이 다릅니다. 활동은 항상 작업의 유일한 단일 멤버입니다.
특수한 시작
(권장 x)
singleInstancePerTask 다중 인스턴스 : 조건부
이 활동은 작업의 루트 활동, 즉 작업을 만든 첫 번째 활동으로만 실행될 수 있으므로 작업에는 이 활동의 인스턴스가 하나만 있습니다. 그러나 활동은 서로 다른 작업에서 여러 번 인스턴스화될 수 있습니다.

 

 자세한 설명은 아래의 안드로이드 개발자 사이트에서 자세히 나와있습니다.

https://developer.android.com/guide/topics/manifest/activity-element?hl=ko#lmode

 

Android 개발자  |  Android Developers

애플리케이션의 시각적 사용자 인터페이스 일부를 구현하는 활동(Activity 서브클래스)을 선언합니다. 모든 활동은 매니페스트 파일의 {@code} 요소로 나타내야 합니다. 여기에 선언되지 않은 활동

developer.android.com

 실제로 자주 사용되는 건 standard와 singleTop인데, 별도의 지정이 되지 않으면 standard로 이용되므로, singleTop으로 사용하고 싶을때만 지정해 준다고 보면 됩니다.

 

사용방법

AndroidManifest.xml

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

<activity android:name=".SingleTopActivity" android:launchMode="singleTop"/>

<activity android:name=".SingleTaskActivity" android:launchMode="singleTask"/>

<activity android:name=".SingleInstanceActivity" android:launchMode="singleInstance"/>

<activity android:name=".SingInstancePerTaskActivity" android:launchMode="singleInstancePerTask"/>
반응형