반응형
LaunchMode
- 액티비티 실행시 쌓이는 액티비티 스택에 대한 운영 방식 을 설정하는 모드 이다.
- 하나의 액티비티 스택 == 태스크 ( Task ) == 백스택
- 모드에 따라 하나의 태스크 또는 여러 개의 태스크에서 어플리케이션이 실행될 수 있다.
- LaunchMode는 총 4개이며,
manifest
의activity
요소의android:launchMode
속성으로 지정할 수 있다.
- 액티비티에 LaunchMode 값을 지정하지 않는다면 기본 값인 standard 가 들어가게 된다.
다중 인스턴스 지원 여부에 따른 분류
- 지원 有 : standard, singleTop ( singleTop 은 조건부 지원 )
대부분의 액티비티에 대한 일반적인 시작 - 지원 無 : singleTask, singleInstance
특수한 시작 ( 일반 용도로는 권장되지 않음 )
1. standard
- 기본적으로 설정되는 값이다.
- 항상 액티비티 스택을 쌓아 올린다.
2. singleTop
- 액티비티의 인스턴스가 이미 태스크의 맨 위에 존재 할 경우 새 액티비티 인스턴스를 생성하지 않고 onNewIntent() 메서드를 호출하여 기존의 액티비티 인스턴스를 재활용한다.
- 시나리오 설정
- A 는 standard 모드이며 Intro 화면 및 외부 스키마 처리를 수행하기 위해 가장 먼저 실행되는 액티비티
- B 는 singleTop 모드이며 메인 액티비티
- 시나리오
- 그림 1,2 : 최초로 어플리케이션을 실행하게 되면 A, B 액티비티의 새 인스턴스를 생성한다.
- 그림 3,4 : 외부 앱을 통해 다시 해당 어플리케이션을 호출하면 가장 먼저 A 액티비티가 실행된다. A 액티비티는 launchMode가 standard 이기 때문에 인스턴스를 새로 생성한다. 그리고 A 액티비티는 B 액티비티를 호출한다. 이 때 최상위 스택 액티비티 가 B 액티비티이기 때문에 A 액티비티는 B 액티비티 인스턴스를 호출하지 않고 onNewIntent() 메서드를 호출하여 B 액티비티를 재활용한다.
- 만약 A가 singleTop 이면? : 최상위 스택 액티비티가 B 이기 때문에 A 액티비티 인스턴스는 새로 생성된다. ( standard 와 같다. )
3. singleTask
- singleTask 모드로 설정된 액티비티는 오직 태스크의 루트에만 존재 할 수 있다.
- singleTask 로 설정된 액티비티를 호출하게되면 새로운 태스크가 생성되고 singleTask 로 설정된 액티비티에서 다른 액티비티를 호출할 경우 그 액티비티는 새로 생성된 Task 위에 쌓이게 된다.
- 태스크에 이미 생성되고 singleTask 로 설정된 액티비티가 다시 호출될 경우 onNewIntent() 메서드를 통해 해당 액티비티를 재활용한다.
- singleTask 모드는 singleTop 모드와 다르게 스택의 최상위 액티비티와 비교하지 않는다.
4. singleInstance
- singleTask와 동일하게 액티비티 호출시 항상 새로운 태스크가 생성된다.
- singleTask와 차이점 : singleInstance는 하나의 태스크에 하나의 액티비티만 존재 할 수 있다.
참고자료 ( 출처 )
https://g-y-e-o-m.tistory.com/94
https://m.blog.naver.com/PostView.nhn?blogId=manhdh&logNo=120162763951&proxyReferer=https%3A%2F%2Fwww.google.com%2F
반응형
'Android Developer' 카테고리의 다른 글
[Android] Task 와 Back Stack (0) | 2019.07.15 |
---|---|
[Android] Log (0) | 2019.07.10 |
[Android] 난독화(Proguard) (0) | 2019.05.14 |
[Android] OpenSource, ButterKnife, Firebase (0) | 2019.05.02 |
[Andoird] GIF를 이용한 Splash Activity 만들기 (0) | 2019.04.12 |