우린 앱을 쓰다보면, 앱을 종료하고 싶을 때가 있다.
그럴 때 뒤로가기를 누르면 "한번 더 누르면 앱이 종료됩니다."라고 뜨면서 한번에 종료가 안되고,
뒤로가기 버튼을 한번 더 눌러야만 앱이 종료가 되는 앱을 많이 봤을 것이다.
오늘은 그 기능을 한번 만들어 보겠다.
뒤로가기 기능 제어
@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")
}
}
원하는 페이지에 이렇게 작성하면 잘 작동된다.