안드로이드에서 finish()와 finishAffinity() 메서드의 차이점
안드로이드 앱 개발에서 액티비티(Activity)를 종료하는 데는 finish()와 finishAffinity()라는 두 가지 메서드가 있다 이 메서드는 액티비티 스택을 관리할 때 중요한 차이점을 가지고 있는데 finish()와 finishAffinity()의 차이에 대해 알아보면
finish()
finish() 메서드는 현재 액티비티만 종료하고 이전 액티비티 스택으로 돌아간다 사용자는 이전 액티비티로 되돌아갈 수 있다 예를 들어, 액티비티 스택이 A → B → C로 열려 있다면 C 액티비티에서 finish()를 호출하면 현재 액티비티인 C만 종료되고 B 액티비티로 돌아갈 수 있다.
finishAffinity()
반면에 finishAffinity() 메서드는 현재 액티비티와 이전에 열려있던 모든 액티비티를 종료하고 앱을 완전히 종료한다 사용자는 앱을 다시 시작해야만 이전 액티비티로 돌아갈 수 있다 다시 앞의 예를 들어보면 C 액티비티에서 finishAffinity()를 호출하면 C 액티비티와 B 액티비티가 종료되고 앱이 완전히 종료된다.
결론
이러한 차이점을 이해하면 액티비티 스택을 효과적으로 관리할 수 있다 finish()는 현재 액티비티를 단순히 종료하여 이전 액티비티로 돌아가는 데 유용한데 예를 들어, 사용자가 설정 화면에서 변경한 사항을 저장한 후 finish()를 호출하여 설정 화면을 닫고 이전 액티비티에서 변경 내용을 적용할 수 있으며
finishAffinity()는 앱을 완전히 종료하는 데 사용될 수 있다 예를 들어, 사용자가 로그아웃을 요청하면 로그인 화면으로 돌아가야 할 수도 있다 이 경우, finishAffinity()를 호출하여 모든 액티비티를 종료하고 앱을 완전히 종료하여 로그인 화면을 다시 시작할 수 있다.
두 메서드는 액티비티 스택을 관리하는 데 중요한 역할을 하기에 적절하게 선택하여 사용하면 앱의 사용자 경험을 개선하고 메모리 관리에도 도움이 될 수 있다.