Android onBackPressed deprecated

사용 언어: Kotlin 1.7.10
사용 버전: Android Studio Chipmunk 2021.2.1 Patch 2

안드로이드 onBackPressed deprecated를 알아보겠습니다.


안드로이드 API 33에서는 onBackPressed가 Depreacted 되었습니다.
그 이유는 여기서 확인할 수 있습니다.

https://developer.android.com/guide/navigation/predictive-back-gesture



Add support for the predictive back gesture이 도입되면서 그렇습니다. 뒤로 가기 동작을 통해 뒤로 가는 것을 미리 보여준다 뭐 이런 기능입니다.


onBackPressedCallback 또는 OnBackInvokedCallback을 써라고 하는데 이 글에서는 onBackPressedCallback을 다루겠습니다.

해당 기능을 사용하려면 AppCompat 1.6.0-alpha05(AndroidX) 버전 이상이어야 합니다.

현재 beta01까지 나왔네요. 

implementation 'androidx.appcompat:appcompat:1.6.0-beta01'







MainActivity의 onBackPressed에 저는 엄청 긴 코드들이 적혀있습니다. 코드는 신경 쓰지 말아 주세요.







이것을 onBackPressedCallback으로 변경해 줄 겁니다.

변수를 하나 만듭니다.

저는 backPressCallback으로 만들었고 null로 초기화합니다.






함수를 하나 만듭니다.

저는 setBackCallback으로 만들었습니다.

onBackPressedDispatcher에 addCallback을 통해서 콜백을 추가합니다. owner에 들어간 this는 MainActivity의 생명주기입니다. 콜백은 MainActivity의 생명주기를 따라 동작합니다. 수동으로 해제할 필요가 없습니다.

addCallback은 여러 번 불러와질 수 있습니다. 즉 콜백이 여러 개 일 수 있다는 뜻입니다. 콜백은 나중에 들어간 게 제일 먼저 순서대로 불러와집니다. 하지만 제일 첫 번째에 들어간 콜백이 실행되려면 늦게 들어간 것들의 enable이 false가 되어야 합니다.






onCreate로 가서 위의 함수를 부릅니다.









아까 위에 있던 onBackPressed 안에 있던 것들을 위의 setBackCallback 함수 안에 집어넣습니다.

코드는 신경 쓰지 마세요. 그냥 이렇게 옮겨준다고 보시면 됩니다.








종료하고 싶다면 이렇게 합니다.

finish를 사용하면 됩니다. 그냥 뒤로 가기라면 navigationController에 popBackStack을 이용해 줍니다.





끝.


카테고리: Android

댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)