티스토리 뷰
Android Activity의 4가지 런치모드에는 다음과 같이 존재한다.
Standard
SingleTop
SingleTask
SingleInstance
Standard방식
일반적인 모드다. 동일한 액티비티던 다른 액티비티던 계속 엑티비티 스택에 쌓아 올린다.
SingleTop방식
statndard 모드와 다르게 "최상위 스택에 있는 엑티비티"를 또 다시 호출할경우 새로 스택에 쌓지않고 기존에 있는 액티비티를 재활용하고 이때 해당 엑티비티 (그림에서 A) 는 onNewIntent() 메서드가 호출되고 새로운 intent 를 넘김으로써, 엑티비티가 다시 호출 됬음을 알린다. 이때 주의할 점은 "최상위 스택"에 있지 않는 엑티비티의 경우 그냥 standard 모드 처럼 새로운 엑티비티가 생성되고 스택에 쌓인다.
SingleTask방식
singleTask 모드로 설정된 액티비티는 오직 엑티비티 스택의 "루트" 에만 존재 할수 있다. 다시 말하자면 singleTask 로 설정된 액티비티를 호출하게되면 새로운 태스크가 생성되고 여기서 새로운 스택의 루트로써 스택이 쌓여지게 되고, singleTask 로 설정된 액티비티에서 다른 액티비티를 호출할경우 그 액티비티는 새로 생성된 Task 위에 쌓이게 된다.
만일, "기존 액티비티를 호출할 경우" 에서 처럼 이미 존재하는 액티비티를 호출할경우 singleTop 에서 처럼 해당 액티비티가 재활용되고 이때 onNewIntent() 가 호출된다.
SingleInstance방식
singleTask 과 동일하게 액티비티 호출시 항상 새로운 태스크가 생성된다. 하지만 여기서 차이점은 singleTask 는 새로운 태스크에 2~3~ 이상의 액티비티 스택을 쌓을수 있는 반면, singleInstance는 오직 하나의 태스크에 하나의 액티비티만 존재 할수 있다.
'Frontend > Android' 카테고리의 다른 글
Fragment View Pager 간단하게 구현하기 (0) | 2019.07.16 |
---|---|
Android Context에 대하여 (0) | 2019.06.10 |
Fragment 간의 데이터 전달 및 findViewById 사용하기 (0) | 2019.06.10 |
Retrofit2 사용해보기 (0) | 2019.05.31 |
ANR의 정의, 발생 요인 및 대응책 (0) | 2019.05.30 |
- Total
- Today
- Yesterday
- 컬렉션
- Auto Layout
- 안드로이드
- ios
- apple
- Notissu
- Apple Watch
- Elliotable
- watchos
- C++
- 아이폰
- Reactive programming
- android
- 코틀린
- Rxjava
- retrofit
- 오토레이아웃
- SwiftUI
- 함수형
- 스위프트
- Swift
- 상속
- 알고리즘
- 함수형프로그래밍
- CloudComputing
- 애플워치
- XCode
- java
- databinding
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |