dev/aos

[AOS] launchMode정리

캄춰 2023. 10. 30. 13:13
728x90
반응형

A액티비티 → B액티비티로 이동

B액티비티에서 뒤로 가기 누른 뒤 작업 창에서 다시 해당 앱을 누르면 'B액티비티'가 이어서 표출하길 원했다.

 

하지만, A액티비티가 표출되었고, FLAG로 조절하는 줄 알았던 나의 오랜 기억을 다시 정리한다.

 

'launchMode'

  1. standard(기본값:생략) : 기본 값이다. TASK에 새로운 액티비티 인스턴스 스택이 쌓이게 된다.
  2. singleTop : 맨 위에 쌓인 액티비티 인스턴스를 재사용한다. 맨 위에 쌓였던 인스턴스가 아니면 새로 생성되게 된다.
  3. singleTask : 액티비티가 고유한 TASK에서 실행된다. 각 TASK에 하나만 존재하게 된다.
  4. singleInstance : 액티비티가 고유한 TASK에서 실행된다. singleTask와의 차이점은 TASK안에 오직 자신만 존재한다.

 

[구현]

A액티비티 : MainActivity

B액티비티 : CalculateActivity

        <activity
            android:name=".CalculateActivity"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:launchMode="singleInstance"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

MainActivity에서 CalculateActivity를 실행한 뒤,

뒤로가기 한 후 다시 작업 창에서 해당 앱을 열면 MainActivity가 아닌 CalculateActivity가 표출된다.

728x90
반응형