보통 앱은 뒤로가기 눌러도 종료가 되지 않음
but 현재 만든 앱 다 뒤로가기 누르면 종료된다..
더블클릭해야 종료되도록 설정해주겟다!
뒤로가기로 종료를 막는 방법
activity에서 onBackPressd 함수 내 super.onBackPressed 부분을 주석처리해준다.
... 그런데 티라미수 버젼부터는 onbackPressed 함수를 쓸 수 없어 OnBackPressedDispatcher를 사용해야한다.
기본 사용 방법은 동일하지만 onBackPressedDispatcher에 callBack을 추가해주어야한다.
더블클릭으로 종료하는 방법
뒤로가기 누른 시간을 기억하고 지정 간격 내 한번 더 뒤로가기 클릭시 종료되도록 한다.
Back gesture
백 제스쳐. 스와이프시 화면이 작아지는 애니메이션으로 앱이 종료되고 있음을 사용자에게 명시.
onCreate 함수는 실행시 제일 먼저 호출되는 함수임. (약간 init?)
초기화 할 것들 여기서 해주면 된다.
현재 시간 밀리초단위로 받는 방법은 System.surrentTimeMillis()
(현재시간 - 최근 뒤로가기 누른시간<=지정 간격) 이라면 프로그램을 종료하고
else 라면 최근 뒤로가기 누른 시간을 현재시간으로 update 해준다.
이때 다른 앱처럼 toast메세지도 띄워보겠다~!!
매인 엑티비티 oncreate에서 onBackPressedDispatcher에 콜백을 추가해준다.
뭐야!!! 안드로이드 스튜디오 실행시키다가 갑자기 강제종료되더니 내가 쓴거 날아감
뭐지... 저장을 잘 해주자...
나는 실행 한번 하면 다 저장되는 줄 알았다.....
.
var backPressedTime=0L
val onBackPressedCallback= object : OnBackPressedCallback(true){
override fun handleOnBackPressed() {
if(System.currentTimeMillis()-backPressedTime<2000){
finish()
}
else{
backPressedTime=System.currentTimeMillis()
Toast.makeText(this@MainActivity,"더블클릭시 종료",Toast.LENGTH_SHORT).show()
}
}
}
이렇게 해주면 더블 클릭했을 때만 앱이 종료되고 한번 클릭하면 토스트 메세지가 뜨는 것을 확인 할 수 있다