
Android 13에서는 휴대전화, 대형 화면, 폴더블과 같은 Android 기기의 예측 뒤로 동작을 도입합니다. 이 기능을 완전히 구현하면 사용자는 뒤로 동작을 완료하기 전에 뒤로 동작의 대상이나 다른 결과를 미리 볼 수 있습니다. 따라서 사용자는 계속할지 아니면 현재 뷰에 머무를지 결정할 수 있습니다.
예를 들어 뒤로 동작을 사용하면 그림 1의 샘플과 같이 앱 뒤에 홈 화면의 애니메이션 미리보기가 표시될 수 있습니다. Android 13 최종 출시부터는 개발자 옵션을 사용 설정하여 이 홈으로 돌아가기 애니메이션을 테스트할 수 있습니다(이 페이지에 설명됨).
예측 뒤로 동작을 지원하려면 OnBackPressedCallback
AppCompat 1.6.0-alpha03(AndroidX) 이상 API 또는 새 OnBackInvokedCallback
플랫폼 API를 사용하여 앱을 업데이트해야 합니다.
이 업데이트에서는 KeyEvent.KEYCODE_BACK
및 onBackPressed
메서드가 포함된 모든 클래스(예: Activity
, Dialog
)인 더 이상 지원되지 않는 뒤로 탐색 API의 이전 경로를 제공합니다.
Codelab
이 페이지에서 이 문서를 사용하는 것 외에도 AndroidX Activity APIs
를 사용하여 예측 뒤로 동작을 처리하는 WebView의 일반적인 사용 사례 구현을 제공하는 Codelab을 사용해 보세요.
기본 뒤로 탐색을 사용하는 앱 업데이트
앱에서 맞춤 뒤로 동작을 구현하지 않으면(즉, 뒤로 처리 작업을 시스템에 맡김) 이 기능을 지원하도록 앱을 업데이트하는 작업은 간단합니다. 이 페이지에 설명된 대로 이 기능을 선택하기만 하면 됩니다.
맞춤 뒤로 탐색을 사용하는 앱 업데이트
앱에서 맞춤 뒤로 동작을 구현하는 경우 AndroidX를 사용하는지 여부와 뒤로 탐색을 처리하는 방식에 따라 이전 경로가 달라집니다.
앱에서 AndroidX 사용 | 앱에서 뒤로 탐색을 처리하는 방식 | 권장 이전 경로(이 페이지의 링크) |
예 | AndroidX API | 기존 AndroidX 뒤로 구현 이전 |
지원되지 않는 플랫폼 API | 지원되지 않는 뒤로 탐색 API가 포함된 AndroidX 앱을 AndroidX API로 이전 | |
아니요 | 지원되지 않는 플랫폼 API, 이전 가능 | 지원되지 않는 뒤로 탐색 API를 사용하는 앱을 플랫폼 API로 이전 |
지원되지 않는 플랫폼 API, 이전 불가능 | 필수 기능이 될 때까지 선택 연기 |
AndroidX 뒤로 탐색 구현 이전
이 사용 사례가 가장 일반적입니다(가장 권장됨). 이는 맞춤 뒤로 탐색 제공에 설명된 대로 OnBackPressedDispatcher
를 사용하여 맞춤 동작 탐색 처리를 구현하는 신규 또는 기존 앱에 적용됩니다.
앱이 이 카테고리에 속하는 경우 이 페이지에 설명된 예측 뒤로 동작을 선택하여 예측 뒤로 지원을 추가할 수 있습니다.
지원되지 않는 뒤로 탐색 API가 포함된 AndroidX 앱을 AndroidX API로 이전
앱에서 AndroidX 라이브러리를 사용하지만 지원되지 않는 뒤로 탐색 API를 구현하거나 참조하는 경우 새 동작을 지원하기 위해 AndroidX API를 사용하도록 이전해야 합니다.
지원되지 않는 API를 AndroidX API로 이전하려면 다음 단계를 따르세요.
OnBackPressedCallback
구현을 사용하여 시스템 뒤로 처리 로직을 AndroidX의OnBackPressedDispatcher
로 이전합니다. 자세한 내용은 맞춤 뒤로 탐색 제공을 참고하세요.시스템 뒤로 탐색 가로채기를 중지하려면 이전에 사용 설정한
OnBackPressedCallback
의 인스턴스를 사용 중지하거나 항상 콜백을 사용 설정하지 않아야 합니다.앱 이전이 정상적으로 완료되면 이 페이지에 설명된 대로 예측 뒤로 동작을 선택합니다.
지원되지 않는 뒤로 탐색 API를 사용하는 앱을 플랫폼 API로 이전
앱에서 AndroidX 라이브러리를 사용할 수 없고 대신 지원되지 않는 API를 사용하여 맞춤 뒤로 탐색을 구현하거나 참조하는 경우 OnBackInvokedCallback
플랫폼 API로 이전해야 합니다.
지원되지 않는 API를 플랫폼 API로 이전하려면 다음 단계를 따르세요.
Android 13 이상을 실행하는 기기에서는 새
OnBackInvokedCallback
API를 사용하고 Android 12 이하를 실행하는 기기에서는 지원되지 않는 API를 사용합니다.onBackInvoked
메서드의 로직에OnBackInvokedCallback
의 맞춤 뒤로 로직을 등록합니다. 이렇게 하면 현재 활동이 완료되는 것을 방지하고 콜백은 사용자가 시스템 뒤로 탐색을 완료하면 뒤로 작업에 응답할 수 있습니다.향후 시스템 뒤로 탐색 개선사항이 제대로 지원되도록 하려면 앱에서
OnBackInvokedCallback
을 등록 취소해야 합니다. 그러지 않으면 시스템 뒤로 탐색을 사용할 때 사용자에게 원치 않는 동작이 표시될 수 있습니다. 예를 들어 뷰 사이에 '멈춰서' 앱을 강제 종료해야 할 수 있습니다.다음은
onBackPressed
에서 로직을 이전하는 방법을 보여주는 예입니다.Kotlin
@Override fun onCreate() { if (BuildCompat.isAtLeastT()) { onBackInvokedDispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT ) { /** * onBackPressed logic goes here. For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } } }
자바
@Override void onCreate() { if (BuildCompat.isAtLeastT()) { getOnBackInvokedDispatcher().registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT, () -> { /** * onBackPressed logic goes here - For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } ); } }
앱 이전이 완료되면 다음 섹션에 설명된 대로 예측 뒤로 동작을 선택합니다.
예측 뒤로 동작 선택
사례를 기반으로 앱을 업데이트하는 방법을 결정했다면 예측 뒤로 동작을 지원하도록 쉽게 선택할 수 있습니다.
선택하려면 AndroidManifest.xml
의 <application>
태그에서 android:enableOnBackInvokedCallback
플래그를 true
로 설정합니다.
<application
...
android:enableOnBackInvokedCallback="true"
... >
...
</application>
값을 제공하지 않으면 기본값은 false
이며 예측 뒤로 동작이 사용 중지됩니다.
예측 뒤로 동작 애니메이션 테스트
Android 13 최종 출시부터 개발자 옵션을 사용 설정하여 그림 1에 표시된 홈으로 돌아가기 애니메이션을 테스트할 수 있습니다.
이 애니메이션을 테스트하려면 다음 단계를 완료하세요.
기기에서 설정 > 시스템 > 개발자 옵션으로 이동합니다.
예측 뒤로 애니메이션을 선택합니다.
업데이트된 앱을 실행하고, 뒤로 동작을 사용하여 실제 작동하는 모습을 확인합니다.