Intent
val iT = Intent(this, MainActivity::class.java)
iT.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(iT)
FLAG_ACTIVITY_SINGLE_TOP
iT.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
동일한 액티비티가 연속으로 쌓을 경우, 새로 Create하지 않고 기존 액티비티를 onPause(), onNewIntent(), onResume() 순서로 재활용
FLAG_ACTIVITY_CLEAR_TOP
iT.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
새로 호출한 액티비티가 이미 스택에 쌓여있는 경우, 해당 액티비티를 순서로 재활용하고, 아래 있는 액티비티는 onDestory() 해버린다.
[A] (RootActivity)
[A] -> [B] -> [C] -> [D] -> [B] (적용 O) 결과 : [A] -> [B]
[A] -> [B] -> [A] (적용 O) 결과 : [A]
[A] -> [B] -> [B] (적용 O) 결과 : [A] - [B]
[A] -> [B] -> [C] (적용 X)
FLAG_ACTIVITY_REORDER_TO_FRONT
iT.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
새로 호출한 액티비티가 이미 스택에 쌓여 있는 경우, 해당 액티비티를 맨 앞으로 가져온다. onResume()
(뒤에꺼는 없어짐)
[A] -> [B] -> [C] -> [A] (적용 O) 결과 : [B] -> [C] -> [A]
[A] -> [B] -> [C] -> [D] -> [B] (적용 O) 결과 : [A] -> [C] -> [D] -> [B]
[A] -> [B] -> [C] -> [C] (적용 O) 결과 : [A] -> [B] -> [C]
FLAG_ACTIVITY_NO_HISTORY
iT.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
Activity Stack에서 [B] Activity에 "FLAG_ACTIVITY_NO_HISTORY" 속성을 적용하고 [B] -> [C] Activity를 호출 하는 경우, [C] Activity는 스택에서 제거 된다. 하지만 종료 시점은 [D] Activity가 onDestory() 되는 시점에 [C] Activity도 같이 onDestory() 된다.
기본원리
1-1) [A] -> [B] -> [C] - [D] (적용 O) ([B]에 속성 추가)
1-2) [A] -> [B] -> [C] -> [D] ([C]가 스택에서 제거됨) ([D]에서 백키누름)
1-3) [A] -> [B] (결과)
2-1) [A] -> [B] -> [C] -> [C] -> [C] (적용 O) (3번째 [C] 에서 속성 추가)
2-2) [A] -> [B] -> [C] -> [C] -> [C] (4번째 [C] 가 스택에서 제거됨) (5번째 [C]에서 백키누름)
2-3) [A] -> [B] -> [C] (결과)
참고: https://arabiannight.tistory.com/entry/286 [아라비안나이트]
'Android > Android 일반' 카테고리의 다른 글
AIDL(Android Interface Definition Language) (0) | 2019.03.25 |
---|---|
Nought(7.0)미만 WifiManager 메모리 누수 문제 (0) | 2019.03.21 |
AVD(에뮬레이터) 삭제하는 방법 (0) | 2019.03.20 |
In App Purchase (0) | 2019.03.13 |
Thread, Looper, Handler (0) | 2019.03.11 |