안드로이드
[안드로이드/Android] Compose 에서 onBackPressed = BackHandler
알통몬_
2023. 3. 16. 16:49
반응형
안드로이드에서 기존에 뒤로가기 버튼 눌렀을 때 동작을 커스텀 할 때 onBackPressed() 메소드를 오버라이딩했씁니다.
Jetpack Compose 에서는 어떻게 구현해야 할까요?
BackHandler 라는 녀석을 사용하면 되는데요.
예제 코드를 보겠습니다.
뒤로 가기 버튼을 빠르게 두 번 눌렀을 때 앱을 종료하는 코드입니다.
// 뒤로 가기 두 번 눌렀을 때 앱 종료
@Composable
fun BackOnPressed() {
val context = LocalContext.current
var backPressedState by remember { mutableStateOf(true) }
var backPressedTime = 0L
BackHandler(enabled = backPressedState) {
if(System.currentTimeMillis() - backPressedTime <= 400L) {
// 앱 종료
(context as Activity).finish()
} else {
backPressedState = true
Toast.makeText(context, "한 번 더 누르시면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show()
}
backPressedTime = System.currentTimeMillis()
}
}
실제 사용 시는 아래와 같이 사용하시면 됩니다.
BackOnPressed()
Scaffold() {
...
}
반응형