액티비티 태스크란 앱이 실행될 때 시스템에서 액티비티의 각종 정보를 저장하는 공간이다.
예시로 Activity가 실행되면 아래와 같이 태스크가 스택으로 쌓이게 된다.
특수한 상황으로 A앱에서 B앱의 Activity를 실행했다고 하면 아래와 같은 상태가 된다.
이때, 런처에서 B앱을 다시 실행하여 B_TwoActivity를 실행하면 A앱 태스크와는 별개의 태스크를 생성한다.
<activity>
태그의 launchMode를 사용한다.<activity android:launchMode="singleTop" ...>
...
</activity>
val intent = Intent(this, TwoActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
동일 Activity 반복 실행시 설정별 태스크 관리
카카오톡 채팅방 예시로, 카톡채팅에 들어가있는 상태에서 카톡 알림을 눌러 새로운 채팅방을 켰을 경우를 보자.
singleTop의 경우 Intent의 내용을 자동으로 수정하는 콜백함수를 override하여 사용한다.
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
}
위와 같이 실행을 할 때, B_OneActivity를 singleTask로 설정하면 새로운 태스크가 생성된다.
B_OneActivity를 singleInstance로 생성하면 해당 액티비티만 단일 태스크로 설정되고, 이후부터 새로운 태스크를 만든다.