본문 바로가기

[Android/Kotlin] 안드로이드 뒤로가기 종료 방지하기 feat. onBackPressed()

꿈꾸는블로그왕 2021. 1. 23.

뒤로가기 버튼을 눌렀을때 백스택이 없으면 앱이 종료됩니다.

 

하지만 사용자의 실수로 앱이 종료될 수 있기 때문에 일정 텀을 주는 것이 좋습니다.

 

그래서 "종료하시려면 뒤로가기 버튼을 한번 더 눌러주세요." 라는 토스트 메시지를 띄워주는 앱이 많습니다.

 

이러한 토스트 메시지를 띄워주는 방법에 대해서 알아보겠습니다.

 

Step01. 변수선언

private var doubleBackToExit = false

 

Step02. onBackPressed()

override fun onBackPressed() {
    if (doubleBackToExit) {
        finishAffinity()
    } else {
        Toast.makeText(this, "종료하시려면 뒤로가기를 한번 더 눌러주세요.", Toast.LENGTH_SHORT).show()
        doubleBackToExit = true
        runDelayed(1500L) {
            doubleBackToExit = false
        }
    } 
}


fun runDelayed(millis: Long, function: () -> Unit) {
    Handler(Looper.getMainLooper()).postDelayed(function, millis)
}

 

oBackPressed() 메소드가 최초 호출될 때 doubleBackToExit을 true으로 변경해줍니다.

1.5초이내 재 클릭시에는 true로 인해 액티비티가 종료되지만, 1.5초 이후에는 Handler에 의해 다시 false로 변경되어 다시 토스트 메시지가 나타납니다.

 

 

 

 

댓글