우찬쓰 개발블로그
Activity LaunchMode & Intent Flag정리 본문
1년에 한번 정도씩 까먹을때쯤 관련 이슈가 일어나서 그냥 정리해두기로..
LaunchMode
Standard (default)
- 항상 새로 생성.
[push A]
A
[push B]
A - B
[push A]
A - B - A
[push A]
A - B - A - A
SingleTop
- 최상단에 이미 그 Activity가 있을경우 그대로 사용.
- 새로 호출시 onCreate 대신 onNewIntent가 호출됨.
[push A] #SingleTop
A
[push B]
A - B
[push A] #SingleTop
A - B - A
[push A] #SingleTop
A - B - A
SingleTask
- 같은 taskAffinity의 어떠한 Task stack 내에 이미 그 Activity를 가지고 있다면, 해당 Activity가 나올때까지 pop 함.
- (나) Task stack 내에 있다가 (가) Task stack 에 들어있는 Activity를 호출하면 (나) Task stack에 있는것들은 pop하지 않음.
- onCreate 대신 onNewIntent 가 호출됨.
1. 하나의 Task 일 경우
[push A] #SingleTask
A
[push B]
A - B
[push C]
A - B - C
[push D]
A - B - C - D
[push C] #SingleTask
A
2. 두개의 Task 일 경우
[push A] #SingleTask
(가) A
[push B]
(가) A - B
[push C to 나]
(가) A - B
(나) C
[push D]
(가) A - B
(나) C - D
[push A] #SingleTask
(가) A
(나) C - D
SingleInstance
- SingleTask와 거의 동일하지만, 무조건 혼자만의 Task를 생성함.
[push A]
(가) A
[push B]
(가) A - B
[push C] #SingleInstance
(가) A - B
(나) C
[push D]
(가) A - B - D
(나) C
Intent Flag
많아서 써본것만 정리
FLAG_ACTIVITY_CLEAR_TOP
- 그 Activity가 이미 현재 Task stack에 있을 경우, 해당 Activity가 나올때까지 pop 함.
- 새로 호출시 onCreate 대신 onNewIntent 가 호출됨.
FLAG_ACTIVITY_SINGLE_TOP
- SingleTop와 동일
- 그 Activity가 이미 Task stack에의 최상단에 있을 경우 그대로 사용
- 새로 호출시 onCreate 대신 onNewIntent 가 호출됨.
FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP
- 해당 Activity가 나올때까지 pop하지만 onCreate 대신 onNewIntent가 호출됨.
FLAG_ACTIVITY_CLEAR_TASK
- 관련된 Task stack을 전부 비움.
FLAG_ACTIVITY_NEW_TASK
- SingleTask과 동일
- 같은 taskAffinity내의 Task stack내에 이미 그 액티비티가 이미 있을경우, 해당 Activity가 나올때까지 pop 함.
- onCreate 대신 onNewIntent 호출됨.
- 같은 taskAffinity내의 Task stack내에 이미 그 액티비티가 없을 경우 새 Task 시작
FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK
- 관련된 Task stack을 전부 비우고 새로운 task stack으로 시작.
FLAG_ACTIVITY_NO_HISTORY
- 이 Activity를 Task stack에 남기지 않는다.
Refer
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko
https://yebon-kim.tistory.com/6
'안드로이드 > 안드로이드 개발' 카테고리의 다른 글
CardView안의 RecyclerView 클릭 막기 (0) | 2024.07.29 |
---|---|
Strange compile error of Pull Request Sonar (0) | 2024.03.25 |
테스트 코드, ViewModel.launch 의 delay 이슈 (0) | 2023.06.01 |
WebView의 canGoBack()과 goBack() 이 이상하게 동작하는 이슈 (2) | 2023.03.30 |
커스텀뷰 개발 - SmoothSeekBar (0) | 2023.03.14 |