-
[Android] 런치모드(LaunchMode)Android/Android 2022. 10. 19. 22:42반응형
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다]
*글을 읽기 전에 알아두면 좋을 것*
<Task란?>
- 어플리케이션에서 실행되는 액티비티 보관 및 관리
- Stack 형태로 존재(액티비티들이 쌓임)
- Flag 사용하여 Task 내 액티비티 흐름 제어 가능
<런치모드란?>
- 액티비티가 어떤 방식으로 실행되어야 하는지에 대한 방식
- 즉, 액티비티가 쌓이는 액티비티 스택에 대한 운영 방식을 설정하는 모드
<런치모드 종류>
- 1. Standard(기본값)
- A -> B -> C의 순서대로 스택에 액티비티가 쌓여 있을 때 다시 B를 호출하면 A -> B -> C -> B의 순서로 쌓임
- 일반적으로 가장 많이 사용되는 모드
- 2. SingleTop
- 현재 호출하려는 액티비티가 현재 작업의 가장 위에 존재하는 경우, 시스템이 새 액티비티 인스턴스 만드는 대신 onNewIntent() 호출하여 인텐트를 해당 인스턴스로 라우팅(라우팅 == 액티비티 인스턴스를 재활용)
- A -> B -> C의 순서대로 스택에 쌓여 있을 때 다시 C를 호출하면 onNewIntent()가 호출되고 A -> B -> C를 유지함
- A -> B- > C의 순서대로 스택에 쌓여 있을 때 B를 호출한 경우 B는 스택의 Top에 있는 액티비티가 아니기 때문에 A -> B -> C -> B로 변화
- 3. SingleTask
- 현재 호출하려는 액티비티가 현재 작업의 가장 위에 존재하는 경우 SingleTop과 동일하게 onNewIntent()를 호출하지만, 가장 위에 존재하지 않는 경우 재호출 시 재사용 되는 것은 SingleTop과 동일하지만 사이에 있는 액티비티들은 모두 Clear됨
- SingleTask로 호출된 액티비티는 항상 스택의 Top에만 있을 수 있음(SingleTask 모드인 액티비티는 무조건 스택의 Top에 있어야 함)
- A -> B -> C -> D의 순서대로 스택에 쌓여 있을 때 B를 호출한 경우 A -> B -> C - > D -> B가 아니라 A -> B로 변화
- 4. SingleInstance
- SingleTask와 동일하게 새로운 Task를 생성하지만 액티비티는 언제나 자신의 Task의 유일한 멤버이고, SingleTask로 시작한 액티비티는 모두 별개의 Task에서 열림
- SingleTask는 하나의 Task에 여러 개의 액티비티 쌓을 수 있는 반면, SingleInstance는 하나의 Task에 하나의 액티비티만 쌓을 수 있음
- A -> B -> C -> D 순서대로 스택에 쌓여 있을 때 D를 SingleInstance 모드로 실행할 경우 아래와 같이 변화
- Task1 : A -> B -> C
- Task2 : D
반응형'Android > Android' 카테고리의 다른 글
[Android]Android SDK33 xml 자동완성 안 되는 문제 (0) 2023.03.21 [Android] 암시적 인텐트(Intent)와 resolveActivity() (0) 2022.10.07 [Android] Handler/Looper 기초 (0) 2022.09.28 [Android] Privacy Policy로 플레이 스토어 앱 등록 개인 정보 처리 방침 만들기 (0) 2022.09.21 [Android] 의존성 주입(DI/Dependency Injection) (0) 2022.09.06