[안드로이드/Kotlin] 두 번 눌러 앱 종료 구현

토시·2022년 4월 27일
0

[Project] 개인공부

목록 보기
9/15

내가 원한 '뒤로' 버튼 로직

  1. 평소에는(뒤로 갈 페이지가 있는 경우) 그냥 뒤로 가기

  2. 첫 페이지에서는(뒤로 갈 페이지가 없는 경우) 토스트 메시지 출력하고,

    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()
    }
profile
개발하는 토시

0개의 댓글