💡 Kotlin

[Activity] LaunchMode

콩드로이드 2023. 6. 15. 12:54

안녕하세요오 🤟

오늘은 Activity의 LaunchMode에 관해 알아보겠습니다 

이게 은근 이름도 비슷하고 헷갈리더라구요 🥲

포스팅하면서 다시 한 번 공부해보는 시간이였습니다

 

그럼 스탙-!

 


🔍  LaunchMode

 

간단히 말하자면 launmode는 말 그대로 Activity가 Task에서 어떻게 실행되는지에 대해 설정하는 부분입니다.

정할 수 있는 속성으론 standard, singleTop, singleTask, singleInstance 가 있습니다

우선 각 속성을 알아보기 전, 아래 2가지에 대해 먼저 알아보겠습니다 

 

📌 Task , 📌 Flag

 

Activity는 FILO order로, 가장 처음에 실행된 Activity는 Root, 마지막에 실행되는 Activity는 Top이 됩니다.

(Android에서 Activity는 Stack으로 관리됨)

새로운 Activity를 실행하게 되면  Stack의 가장 첫번째로 올라오고, 포커스를 가져가게 됩니다.

그리고, 직전 Activity는 Stack에 남아있습니다. 

 

 

 

Task : Activity의 생성, 관리 및 제어

Flag :  Activity의 흐름을 제어하기 위해 사용됩니다. (launchMode를 코드내에서 사용하고 싶을 때 Flag를 이용합니다)

 

이제 LaunchMode의 속성들을 순서대로 하나씩 알아봅시다 👀


Standard (default)

 

기본으로 사용되는 LaunchMode로,

위와 같이 별도의 task를 생성하지 않고 하나의 task에 계속해서 항상 Stack을 쌓아갑니다.

 

 

SingleTop 

 

SingleTop은 만약, Top Stack에 위치한 Activity와 같은 Activity가 추가되면 Stack에 새로 추가하지 않고 (새 인스턴스를 생성하지 않고) onNewIntent()를 통해 기존 Activity를 재사용합니다.

 

하지만, 다른 Activity가 들어오면 Standard처럼 동작합니다.

 

SingleTask

SingleTask로 선언된 Activity는 오직 Task의 Root로만 존재합니다

새로운 Task를 생성하고, 그 후 SingleTask로 선언되지 않은 Activity가 추가되면 해당 Stack위에 쌓이게 됩니다

(다른 Activity도 동일 Task에 생성가능)

앱이 메인 화면과 설정 화면으로 구성되어 있다면, 메인 화면은 일반적인 launchMode로 동작하고, 설정 화면은 singleTask로 설정하여 독립적인 태스크에 속하게 할 수 있습니다

 

SingleInstance

 

 

SingleTask와 비슷하지만, 가장 독립적인 형태입니다

태스크에는 해당 설정이 적용된 액티비티 하나만 등록되어, 

SingleTask가 적용된 액티비티 이후에 실행되는 Activity는 또 다른 Task에 등록됩니다 

 


​오늘은 launchMode에 대해서 알아봤습니다 🥳

 

혹시 틀린 내용이나 의견이 있으시면 댓글 부탁드려요 :) 

감사합니다 🙇🏻‍♀️