[안드로이드 / Kotlin] 뒤로가기 두번 눌러서 종료하기

2021. 8. 31. 18:05·Android
반응형

안드로이드에서는 뒤로가기 버튼을 이용해서 앱을 종료할 수 있습니다. 하지만 이는 사용자 입장에서 앱이

예상치 못하게 쉽게 종료될 위험이 있으므로, 해당 문제를 방지하기 위해 특정 시간 내에 두번 뒤로가기
눌렀을 경우에만 앱이 종료되도록 할 수 있습니다.

 

<예시 코드>

	private var backPressTime: Long = 0
    
	override fun onBackPressed() {
        if(System.currentTimeMillis() > backPressTime + 2000) {
                Toast.makeText(this, "'뒤로' 버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show()
                backPressTime = System.currentTimeMillis()

                return
            }

            if(System.currentTimeMillis() <= backPressTime + 2000) {
                super.onBackPressed()
            }
    	}
    }

뒤로가기 버튼이 눌렸을 경우 호출되는 onBackPressed() 함수를 수정해서 사용하면 구현이 가능합니다.

 

해당 로직의 주요점은 backPressTime이라는 Long형 변수를 이용해서 현재 시간을 나타내는 

System.currentTimeMillis() 와의 비교를 통해 종료 여부를 결정하는 것입니다.

 

최초에 backPressTime을 0으로 초기화 합니다. 이에 따라 첫번째 if문에 무조건 걸리게 되어 현재시간의 값을 backPressTime에 저장합니다. 만약 사용자가 2초 내에 한번 더 뒤로가기를 눌렀다면,

두번째 if문에 걸리게되어 앱이 정상적으로 종료됩니다.

하지만 2초가 경과한 뒤에 눌렀다면 첫번째 if문에 걸리게되어 다시 처음부터 로직이 돌게됩니다.

반응형

'Android' 카테고리의 다른 글

[안드로이드 / Kotlin] 코드로 문자열 밑줄 표현하기  (0) 2021.09.04
[안드로이드 / Kotlin] windowLightStatusBar  (0) 2021.09.01
[안드로이드 / Kotlin] Array와 ArrayList 변환  (0) 2021.08.31
[안드로이드 / Kotlin] 라디오버튼 Dialog  (0) 2021.08.31
[안드로이드 / Kotlin] DatePickerDialog  (0) 2021.08.29
'Android' 카테고리의 다른 글
  • [안드로이드 / Kotlin] 코드로 문자열 밑줄 표현하기
  • [안드로이드 / Kotlin] windowLightStatusBar
  • [안드로이드 / Kotlin] Array와 ArrayList 변환
  • [안드로이드 / Kotlin] 라디오버튼 Dialog
서주냥
서주냥
간단한 것도 기록하는 습관을 가지자
  • 서주냥
    DroidLog
    서주냥
  • 전체
    오늘
    어제
    • 전체보기 (58)
      • 알고리즘 (12)
        • 백준 (4)
        • 프로그래머스 (5)
        • 개념 (3)
      • Android (43)
        • Compose (1)
      • Java (2)
      • Kotlin (1)
  • 링크

    • GitHub
  • 인기 글

  • 태그

    FusedLocationProviderClient
    최단 경로
    코틀린
    moshi
    reified
    ConstraintLayout
    블루투스
    코루틴
    벨만 포드
    다이나믹 프로그래밍
    Clean Architecture
    Coroutine Flow
    Hilt
    viewmodel
    viewpager2
    백준
    자바
    투 포인터
    debounce
    BLE
    뷰모델
    Coroutine
    안드로이드
    프로그래머스
    RecyclerView
    알고리즘
    클린 아키텍처
    SnackBar
    textunit
    이진 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
서주냥
[안드로이드 / Kotlin] 뒤로가기 두번 눌러서 종료하기
상단으로

티스토리툴바