ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    반응형

    댓글

Designed by Tistory.