如何在 Android Jetpack Compose 中保存和恢复 WebView 状态?

问题描述 投票:0回答:1

我之前通过重写 Activity 类中的

onSaveInstanceState(outState: Bundle)
方法将 WebView 状态保存在 Android 应用程序中,如下所示:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    webView.saveState(outState)
}

现在,我正在迁移我的应用程序以使用 Jetpack Compose,我想知道如何实现相同的功能来保存和恢复 WebView 状态。

android android-studio webview android-jetpack-compose savestate
1个回答
0
投票

在 Jetpack Compose 中保存和恢复 WebView 状态可以通过使用

rememberSaveable
状态来保留 Bundle 并利用
AndroidView
可组合项来完成。下面是一个完整的示例,展示了如何实现这一目标:

@Composable
fun WebViewScreen(
    startUrl: String,
    modifier: Modifier = Modifier,
) {
    val bundle: Bundle = rememberSaveable { bundleOf() }

    AndroidView(
        factory = { context ->
            WebView(context)
        },
        modifier = modifier,
        onRelease = { webView ->
            webView.saveState(bundle)
        },
        update = { webView ->
            if (bundle.isEmpty) {
                webView.loadUrl(startUrl)
            } else {
                webView.restoreState(bundle)
            }
        }
    )

}
© www.soinside.com 2019 - 2024. All rights reserved.