본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] finishAffinity() 와 finishAndRemoveTask() 에 대하여 with 실험

by 돼지왕 왕돼지 2021. 1. 27.
반응형

 

FinishAndRemoveTask

 

-

API Level 16 (Android 4.1, JB) 에 추가된 API

호출하는 Activity 기준 본인 포함 현재 task 의 '하단'에 있는 모든 Activity 를 종료시켜준다.

 

-

Activity Call Stack : A -> B -> C

C에서 finishAffinity() 를 호출하면 A, B, C 가 모두 destroy 된다.

 

 

-

Activity Call Stack : A -> B -> C

B 에서 handler 를 통해 delay 를 주면서 finishAffinity() 호출하면 A, B 가 destroy 되고 C 는 destroy 되지 않고 살아있는다.

호출하는 Activity 기준 '하단' 만 종료됨에 유의하자.

 

 

-

참고자료 : https://developer.android.com/reference/android/app/Activity#finishAndRemoveTask()

 

Activity  |  Android 개발자  |  Android Developers

 

developer.android.com

 

 

 

FinishAffinity

 

-

API Level 21 (Android 5.0, LOS) 에 추가

호출하는 Activity 가 taskRoot 일 경우 본인 포함 위에 쌓여있는 task 의 activity 들을 모두 종료시킨다.

taskRoot 가 아닐 경우 본인만 종료된다.

 

 

-

Activity Call Stack : A -> B -> C

B에서 handler 로 delay 를 주어 finishAffinity() 를 호출하면 B 만 destroy 되어

A -> C 형태의 stack 이 남는다. (본인만 종료)

 

 

-

Activity Call Stack : A -> B -> C

A에서 handler 로 delay 를 주어 finishAndRemoveTask() 를 호출하면 A, B, C 모두 destroy 된다.

 

-

참고 자료 : https://developer.android.com/reference/android/app/Activity#finishAffinity()

 

Activity  |  Android 개발자  |  Android Developers

 

developer.android.com

 

 

 

 

반응형

댓글