如何防止在返回时重新渲染上一个屏幕 - Jetpack Compose?

Bia*_*ali 8 android google-maps-android-api-2 android-jetpack android-jetpack-navigation android-jetpack-compose

在此输入图像描述

我有两个屏幕 - MapScreen(Google Map SDK)Search Screen

我通过按顶部的“搜索”按钮从 MapScreen 导航到 SearchScreen。

当我在搜索屏幕(白色屏幕)上时 - 我按后退按钮导航回地图屏幕。

当我们向后导航时,整个 MapScreen(尤其是 Google 地图)会重新渲染,这会造成向后导航的延迟。

如何防止地图屏幕在返回时重新渲染?

我的导航代码:

val navController = rememberNavController()
            NavHost(
                navController = navController,
                startDestination = Route.MAP
            ) {
                composable(Route.MAP) {
                    MapScreen(onNextClick = {
                        navController.navigate(Route.SEARCH)
                    })
                }
                composable(Route.SEARCH) {
                    SearchScreen()
                }
            }
Run Code Online (Sandbox Code Playgroud)

use*_*854 3

使用 NavController 无法执行任何操作。你实际上是在告诉它销毁一个屏幕以转到下一个屏幕。因此,当您返回时,它必须重新渲染第一个屏幕。

您需要做的就是在地图屏幕顶部显示搜索屏幕(您实际上可以在地图屏幕顶部显示 SearchScreen 可组合项,或者将其放在弹出窗口、底部工作表、对话框等中)

编辑: