본문 바로가기
[Android]

뒤로가기 두 번으로 앱 종료시키기 ( OnBackPressedCallback )

by Hevton 2023. 4. 11.
반응형

 

안드로이드 33부터 onBackPressed() 가 Deprecated 되었다.

이제 다른 방법을 사용해야 한다. onBackPressedCallback이다.

 

이걸 이용해서 '뒤로가기 두 번 누를 시 앱 종료' 기능을 구현할 것이다.

private lateinit var callback: OnBackPressedCallback
var mBackWait:Long = 0

일단 전역변수로 콜백이랑 wait 시간을 초기화하고

 

이렇게 onAttach 함수, 그리고 onDetach 함수에 대해서만 구현해주면 된다.

    override fun onAttach(context: Context) {
        super.onAttach(context)

        // 뒤로가기 기능 구현
        callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
            
                // 뒤로가기 발생
                print("occur back pressed event!!")

                if(System.currentTimeMillis() - mBackWait >=2000) {
                        mBackWait = System.currentTimeMillis()
                        Snackbar.make(binding.root,"뒤로가기 버튼을 한번 더 누르면 종료됩니다.",Snackbar.LENGTH_LONG).show()
                    } else
                        requireActivity().finish()

            }
        }
        requireActivity().onBackPressedDispatcher.addCallback(this, callback)
    }
    
    override fun onDetach() {
        super.onDetach()
        callback.remove()
    }

 

 

반응형