Android 자료실/기능 개발

안드로이드(ANDROID) - finish()와 finishAffinity() 활용 방법

Victorywskim 2024. 1. 1. 18:49
반응형

안드로이드에서 액티비티를 종료하는 방법은 크게 두 가지가 있습니다. 

바로 finish() 와 finishAffinity() 입니다. 

 

두가지 모두 액티비티를 종료하지만, 그 차이점은 무엇일까요?

finish()



finish() 는 특정 액티비티만 종료합니다. 즉, finish() 를 호출한 액티비티의 상위 액티비티는 그대로 유지됩니다.

예를 들어, MainActivity가 SecondActivity를 시작하고, SecondActivity에서 finish() 를 호출하면 다음과 같은 일이 발생합니다.

MainActivity
  └── SecondActivity

 

MainActivity는 그대로 유지되고, SecondActivity만 종료됩니다.

finishAffinity()



finishAffinity() 는 액티비티의 액피니티를 종료합니다. 액피니티는 같은 앱의 액티비티들이 그룹화된 단위입니다. 액티비티의 액피니티는 getWindow().getActivityInfo().applicationInfo.packageName로 확인할 수 있습니다.

finishAffinity() 를 호출하면 액피니티에 속한 모든 액티비티가 종료됩니다.

예를 들어, MainActivity가 SecondActivity를 시작하고, SecondActivity에서 finishAffinity() 를 호출하면 다음과 같은 일이 발생합니다.

MainActivity
  └── SecondActivity

 

MainActivity와 SecondActivity 모두 종료됩니다.

두가지 함수의 차이점



finish() 와 finishAffinity() 의 차이점을 다음과 같이 정리할 수 있습니다.

함수 종료 대상
finish() 특정 액티비티
finishAffinity()
액피니티에 속한 모든 액티비티

 

 

사용 시 고려 사항



finish() 는 특정 액티비티만 종료하기 때문에, 액티비티의 종료 흐름을 제어하기가 쉽습니다. 반면, finishAffinity() 는 액피니티에 속한 모든 액티비티를 종료하기 때문에, 액티비티의 종료 흐름을 제어하기가 어렵습니다.

따라서, 특정 액티비티만 종료해야 하는 경우에는 finish() 를 사용하고, 액피니티에 속한 모든 액티비티를 종료해야 하는 경우에는 finishAffinity() 를 사용합니다.

 

감사합니다.

 

반응형