관리 메뉴

Kyung_Development

android:launchMode 각각의 특징 본문

android/Manifest

android:launchMode 각각의 특징

Kyung_Development 2024. 2. 14. 13:07
  1. standard:
    • 기본 launchMode입니다. 새로운 인스턴스가 항상 생성되며, 백스택에 쌓입니다.
    • 각각의 인텐트에 대해 새로운 액티비티 인스턴스가 생성됩니다
    • android:name=".MainActivity" android:launchMode="standard" 
      이 예제에서는 MainActivity가 standard launchMode로 설정되어 있습니다. 따라서 앱에서 MainActivity를 여러 번 시작하면 새로운 인스턴스가 생성됩니다.
    • MainActivity - >  startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> SubActivity 노출됨
  2. singleTop:
    • 액티비티 인스턴스가 백스택의 맨 위에 있으면, 해당 인스턴스를 사용하여 인텐트를 처리합니다.
    • 인텐트를 받을 때 현재 액티비티가 이미 맨 위에 있는 경우에만 새 인스턴스를 생성하지 않습니다.
    • android:name=".MainActivity" android:launchMode="singleTop" 
      MainActivity가 singleTop launchMode로 설정되어 있습니다. 만약 앱에서 MainActivity가 이미 최상위에 있는 경우(백스택의 맨 위), 새로운 인스턴스를 생성하지 않고 현재 인스턴스를 사용합니다.
    • MainActivity - >  startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> SubActivity 노출됨
  3. singleTask:
    • 액티비티가 백스택에 하나만 존재하고, 그 위에 다른 액티비티가 쌓입니다.
    • 이미 존재하는 경우에는 새 인스턴스를 생성하지 않고, 해당 인스턴트로 이동합니다.
    • 이 모드에서의 액티비티는 다른 앱에서도 재사용될 수 있습니다.
    • android:name=".MainActivity" android:launchMode="singleTask" 
      SecondActivity가 singleTask launchMode로 설정되어 있습니다. 이 경우에는 SecondActivity가 백스택에 하나만 존재하며, 다른 액티비티가 위에 쌓입니다. 이미 존재하는 경우에는 새 인스턴스를 생성하지 않고 해당 인스턴트로 이동합니다.
    • MainActivity - >  startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> MainActivity 노출됨
  4. singleInstance:
    • 액티비티가 독립적인 태스크로 실행됩니다. 따라서 그 액티비티를 시작한 앱과 별도의 백스택이 생성됩니다.
    • 다른 앱에서도 동일한 인스턴스를 공유하지 않습니다.
    • 다른 앱에서 이 액티비티를 시작하면 새로운 인스턴스가 아닌 기존의 인스턴스가 사용됩니다.
    • android:name=".MainActivity" android:launchMode="singleInstance" 
      ThirdActivity가 singleInstance launchMode로 설정되어 있습니다. 이 경우에는 액티비티가 독립적인 태스크로 실행되므로, 다른 앱에서도 동일한 인스턴스를 공유하지 않습니다.
    • MainActivity - >  startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> SubActivity 노출됨
  5. singleInstancePerTask:
    • singleInstance와 비슷하지만, 동일한 태스크 내에서만 인스턴스를 공유합니다.
    • 같은 앱에서 시작된 경우에는 singleInstance와 동일한 동작을 하지만, 다른 앱에서 시작되면 새로운 인스턴스가 생성됩니다.
    • android:name=".MainActivity" android:launchMode="singleInstancePerTask" 
      FourthActivity가 singleInstancePerTask launchMode로 설정되어 있습니다. 이 경우에는 singleInstance와 비슷하지만, 같은 태스크 내에서만 인스턴스를 공유합니다
    • MainActivity - >  startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> SubActivity 노출됨