안드로이드 화면스택 전체 제거

안드로이드 화면은 스택형식으로 쌓이게 된다.
- 출처 https://jungwoon.github.io/android/2019/07/15/Activity.html

회원가입에서 close버튼을 누르면 기존에 스택을 모두 비우고 로그인 화면으로 돌아가게 만들어보자.
intent를 이용해 LoginActivity로 이동하면 back버튼을 눌렀을때 다시 회원가입으로 돌아가는 문제가 생겼다.

그러다가 이런 옵션을 발견했다.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP) //액티비티 스택제거

FLAG_ACTIVITY_NEW_TASK : 새로운 TASK를 생성합니다.
FLAG_ACTIVITY_CLEAR_TASK : 현재 TASK를 비웁니다.
FLAG_ACTIVITY_CLAER_TOP : 호출하려는 액티비티가 이미 스택에 쌓여있을 때, 새로 인스턴스를 생성하지 않고 기존의 액티비티를 포그라운드로 가져옵니다. 그리고 액티비티스택의 최상단부터 포그라운드로 가져올 액티비티까지의 모든 액티비티를 삭제합니다.

되긴 된다.

근데 이 옵션은 기존의 스택을 사용하는게 아니라 새로운 스택을 만들어서 새출발하는 형식이였던것.

새로운 스택을 만드는 방식이 아니라 기존 스택을 비우는 방법인 finishAffinity()를 사용하면 된다.

var intent = Intent(this,가고자하는액티비티 ::class.java)
finishAffinity()
startActivity(intent)

좋은 웹페이지 즐겨찾기