평소에는(뒤로 갈 페이지가 있는 경우) 그냥 뒤로 가기
첫 페이지에서는(뒤로 갈 페이지가 없는 경우) 토스트 메시지 출력하고,
a. 2~3초 이내에 '뒤로' 버튼을 다시 누른 경우 > 앱 종료
b. 2~3초가 지난 후 '뒤로' 버튼을 다시 누른 경우 > 아무 일 없음
위와 같은 로직을 원했으나 정확히 이런 로직을 구현한 사람이 없어 직접 구현했다.
/* 뒤로가기 버튼 눌렀을 때 앱 안꺼지게 설정 + 두 번 눌러서 앱 종료 */
private var backPressedTime : Long = 0
override fun onBackPressed() {
val myWebView: WebView = findViewById(R.id.webView)
if(myWebView.canGoBack()){ // 웹사이트에서 뒤로 갈 페이지가 존재한다면(토스트 메시지 안 띄우고)
myWebView.goBack() // 뒤로가기
return // 로직 종료(토스트 메시지 안 띄우기 위해)
}
else if (System.currentTimeMillis() - backPressedTime < 2500){ // 뒤로 갈 페이지가 없고 & 2.5초 이내에 다시 뒤로가기 클릭 시
super.onBackPressed() // 본래의 백버튼 기능(= 앱 종료) 수행
return // 로직 종료(토스트 메시지 안 띄우기 위해)
}
Toast.makeText(this, "'뒤로' 버튼을 한 번 더 누르시면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show()
backPressedTime = System.currentTimeMillis()
}