티스토리 뷰

728x90



새로운 task 생성하기

◼ Manifest

 android:launchMode = ["standard" | "singleTop" | "singleTask" | "singleInstance"]

 

◼ Intent flag

FLAG_ACTIVITY_SINGLE_TOP
 FLAG_ACTIVITY_NEW_TASK
 FLAG_ACTIVITY_MULTIPLE_TASK



android:launchMode = "singleTask"

"singleTask" 로 지정된 activity 는 task 에 해당 activity 가 하나만 존재한다.

◼ 동일한 affinity 가 있는 경우

- 해당 activity 가 존재하는 경우 새로 생성하지 않는다.(onNewIntent() 호출)

- 해당 activity 가 존재하지 않는 경우 새로 생성하여(onCreate() 호출) 가장 위에 추가.

 

◼ 동일한 affinity 가 없는 경우

- 새로운 task 를 생성해고 해당 activity 는 task 의 root 가 된다.

[Android] - Task (2) - taskAffinity



Example

하단은 A1 -> A2 -> A3 -> A4 -> A3 activity 를 차례로 활성화 하는 상황이다.

 

◼ 아무 설정이 없는 경우 (default)

 

◼ A3 가 singleTask 이고, 모두 동일한 affinity 일 경우

   1.1) A1 -> A2 -> A3 -> A4 activity 활성화

   1.2) A4 -> A3 activity 활성화 

        (A4 에서 A3 를 활성화 시키면 A4 를 destroy 시키고 A3 를 재사용 한다.)


◼ A3 가 singleTask 이고, affinity 가 다른 경우

   A1 -> A2 -> A3 -> A4 activity 활성화

   (아래와 같은 상황에서 A4 -> A3 를 활성화 시키면 A4 를 destory 시키고 A3 를 재사용 한다.)



Code

A1 activity

 

A2 activity

 

A3 activity

 

A4 activity

 

Manifest



ADB

adb shell dumpsys activity



728x90
댓글