Android Studio Iguana
Sample for Back Gesture (Android 13+)
OS13で、戻るジェスチャーを使いたい場合は開発者オプションの設定が必要。
詳しくは、ここ参照する。
それより古いOSは戻るジェスチャーは使えない。Jetpack API側で従来のキーイベント処理を行ってくれる。
LifecycleOwnerを引数に取るOnBackPressedDispatcher#addCallbackを使用すれば、画面のライフサイクルの終了タイミングで解放処理を行ってくれるのでメモリリークを防げる。
@Override
public void cancel() {
mLifecycle.removeObserver(this);
mOnBackPressedCallback.removeCancellable(this);
if (mCurrentCancellable != null) {
mCurrentCancellable.cancel();
mCurrentCancellable = null;
}
}
Jetpack Composeの場合は、BackHandler
を使う。こちらに関しては、com.google.accompanist.web.WebView
を使用していれば内部でBackHandler
を使っているので、開発者が対応する必要はない。
https://github.com/google/accompanist/blob/7a293b358c293d398a9b95185b41ef3cc1136475/web/src/main/java/com/google/accompanist/web/WebView.kt#L84:L86
BackHandler(captureBackPresses && navigator.canGoBack) {
webView?.goBack()
}
com.google.accompanist.web.WebView
の使い方は以下のサンプルコードを参考にする。
https://github.com/google/accompanist/blob/a0ebf63b2bb5d681fd5c2c6bb6c2e97022b1b296/sample/src/main/java/com/google/accompanist/sample/webview/BasicWebViewSample.kt
バックキー | 戻るジェスチャー |
---|---|
バックキー | 戻るジェスチャー |
---|---|
利用不可能 |
LeoAndo/development-conference-memo#161
LeoAndo/development-conference-memo#81
https://developer.android.com/guide/navigation/predictive-back-gesture?hl=ja
https://codelabs.developers.google.com/handling-gesture-back-navigation?hl=ja#0
Jetpack ComposeのBackHandlerを使ったサンプル