코틀린/컴포즈

[코틀린 컴포즈] 뒤로가기 버튼 제어 (두번 누르면 앱 종료하기)

  • -
반응형

우린 앱을 쓰다보면, 앱을 종료하고 싶을 때가 있다.
그럴 때 뒤로가기를 누르면 "한번 더 누르면 앱이 종료됩니다."라고 뜨면서 한번에 종료가 안되고,
뒤로가기 버튼을 한번 더 눌러야만 앱이 종료가 되는 앱을 많이 봤을 것이다.

오늘은 그 기능을 한번 만들어 보겠다.

뒤로가기 기능 제어

@Composable
fun BackOnPressed() {
    val context = LocalContext.current
    var backPressedTime = 0L // 뒤로가기 버튼을 눌렀던 시간을 저장하는 변수

    BackHandler(enabled = true) {
				// 만약 전에 뒤로가기 버튼 누른 시간과 특정한 시간 만큼 차이가 나지 않으면 앱종료.
        if(System.currentTimeMillis() - backPressedTime <= 400L) {
            (context as Activity).finish() // 앱 종료
        } else {
				// 특정한 시간 이상으로 차이가 난다면 토스트로 한 번 더 버튼을 누르라고 알림
            Toast.makeText(context, "한 번 더 누르면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show()
        }
				// 뒤로가기 버튼을 눌렀던 시간을 저장
        backPressedTime = System.currentTimeMillis()
    }
}

 

사용 방법

@Composable
fun MySilverTownPage() {
    BackOnPressed() //해당 페이지 뒤로가기 버튼 제어
    Box(
        modifier = Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ) {
        Text(text = "MySilverTownPage")
    }
}

원하는 페이지에 이렇게 작성하면 잘 작동된다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 구독, 공감 부탁드립니다.