관리 메뉴

나만을 위한 블로그

[Android] 카카오 로그인 API의 회원탈퇴 후 백버튼 누를 시 앱이 꺼지는 게 아닌 로그인 후 화면이 나오는 현상 해결 본문

Android

[Android] 카카오 로그인 API의 회원탈퇴 후 백버튼 누를 시 앱이 꺼지는 게 아닌 로그인 후 화면이 나오는 현상 해결

참깨빵위에참깨빵_ 2020. 3. 7. 10:28
728x90
반응형

카카오 로그인 API 기능 붙이는 데 참고한 사이트 : https://m.blog.naver.com/woo171tm/221459407188

 

안드로이드에서 카카오 로그인 API 적용하기 (1) : 카카오 개발자 사이트에 앱 등록하고 설정하기

4. 카카오 개발자 사이트에 내 앱 등록하기 일단, 카카오 로그인을 적용하려면 카카오 개발자 페이지에 로...

blog.naver.com

위 사이트의 글을 따라가니 카카오 로그인 API 구현 자체는 쉽게 됐다.

내 카톡의 프사와 닉네임을 받아오는 것도 확인했고, 인텐트에 이 정보들을 담아서 다른 액티비티로 보내 그곳의 뷰들에 출력시키는 것도 확인했다.

문제는 회원탈퇴에서 발생했다. 카카오 회원탈퇴 버튼을 임의로 만들고 이곳에 회원탈퇴 기능을 가진 함수가 있는 콜백을 넣었다. 버튼을 누르면 회원탈퇴 자체는 잘 작동한다. 다만 회원탈퇴 후 로그인 화면으로 왔을 때 백버튼을 누르면 앱이 꺼져야 하는데 그게 아니라 로그인 후 보이는 액티비티로 넘어가는 문제가 생겼다.

즉 A->B->C로 이동해서 C에서 A로 와서 백버튼을 눌렀더니 중간에 거쳤던 B 액티비티가 보이더라, 라는 것이다.

 

이 문제는 인텐트에 플래그를 추가하는 것으로 간단하게 해결할 수 있다.

 

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

 

FLAG_ACTIVITY_CLEAR_TASK는 이름 그대로 현재 태스크를 모두 비우는 플래그다. 디벨로퍼에선 액티비티가 시작되기 전에 이전 액티비티와 연관된 기존 태스크가 지워지게 한다고 써있다. 액티비티 스택에 쌓여있는 모든 액티비티들을 없애버린다는 뜻 같다.

 

FLAG_ACTIVITY_CLEAR_TASK를 선언했다면 FLAG_ACTIVITY_NEW_TASK는 거의 항상 따라붙는 플래그같다.

이 플래그는 기존 태스크가 없다면 새로운 태스크를 만들며 실행시킨다.

 

즉, 저 두 플래그를 동시에 쓴다는 건 현재 액티비티 스택에 있는 모든 액티비티들을 싹 다 없애버린 후 startActivity()의 결과로 실행되는 액티비티를 앱 안에서 실행되는 첫번째 액티비티로 삼는다는 뜻 같다.

저렇게 쓴 후 startActivity()와 finish()를 박아주니 내가 원하는 대로 회원탈퇴 후 이동하는 로그인 화면에서 백버튼을 누르면 앱이 종료된다.

반응형
Comments