라벨이 PredictiveBack인 게시물 표시

안드로이드 뒤로가기 두 번 눌러 종료 UX 올바른 구현 방법 (웹뷰 히스토리 및 Android 15 대응)

이래저래 웹뷰 기반 앱이나 메인 화면 위주의 간단한 앱을 만들고 운영하다 보면, 사용자가 실수로 앱을 종료하는 걸 막으려고 “뒤로가기 한 번 더 누르면 종료됩니다”라는 토스트 안내를 자주 넣게 됩니다. 저의 경우도 예전부터 습관적으로 구현하던 방식인데요. 이게 아무 생각 없이 모든 화면에 다 적용해 버리면 꼭 운영 중에 문제가 터집니다. 웹뷰에 뒤로 갈 페이지가 남아 있는데 갑자기 종료 토스트가 뜨거나, 상세 화면에서 이전 화면으로 돌아가야 하는데 종료 대기 상태가 되는 식이죠. 특히 요즘 Android 13부터 Android 15 버전까지 이어지는 '예측 뒤로가기(Predictive Back)' 시스템 애니메이션 흐름까지 고려하면, 옛날 방식인 onBackPressed() 오버라이드나 KeyEvent 가로채기로 대충 짜면 안 됩니다. 나중에 제가 다시 보려고 실무 적용 기준으로 순서와 코드를 정리해 둡니다. 내가 겪은 문제와 자주 실수하는 지점 뒤로가기 로직을 정교하게 다듬지 않으면 아래와 같은 문제가 생깁니다. 보통 초보 시절에 코드 복사해서 대충 붙여넣을 때 많이 발생하곤 합니다. 웹뷰 히스토리 꼬임: 웹뷰 안에 이전 페이지가 엄연히 남아 있는데도 처리 안 하고 바로 종료 토스트가 뜨는 현상 상세 화면 갇힘: 메인 탭이 아니라 상세 페이지나 설정 화면인데 이전 화면으로 안 가고 종료 UX가 작동하는 문제 스택 무시 종료: 아직 뒤로 갈 Activity나 Fragment stack이 남아 있는데 앱이 그냥 닫히는 현상 구형 API 의존: 구형 onBackPressed() 나 키 이벤트 가로채기에 의존해서 최신 안드로이드 시스템 백 애니메이션과 충돌하는 문제 일관성 없는 UX: 화면마다 토스트 문구나 종료 대기 시간 기준이 제각각인 현상 운영 관점에서 보면 뒤로가기를 단순히 “앱 종료 버튼”처럼 다루면 안 됩니다. 사용자는 뒤로가기를 눌렀을 때 이전 웹 페이지, 이전 탭, 이전 화면, 이전 앱 상태 순서로 자연스럽게 돌아가기를 ...