Android Jetpack Compose 仅调用视图模型函数一次

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

活动下有一个屏幕级别可组合。当用户导航到该屏幕时,我使用

LaunchedEffect(Unit) {}
来调用执行一些工作的视图模型函数。现在,在设备旋转或发生任何配置更改之前,这一切都可以正常工作。旋转左右后,再次执行
LaunchedEffect(Unit) {}
,这是不可取的。

我知道我可以在视图模型中使用标志来防止再次执行该工作。但是,写在这里是为了看看是否有任何理想的解决方案来解决这个问题,因为这似乎是 Jetpack Compose 中的一个常见问题。

PS:该函数只需位于屏幕级视图模型中。

android kotlin android-jetpack-compose android-viewmodel
1个回答
0
投票

LaunchedEffect
每次重组时都会运行。您可以使用
rememberSaveable
并添加一个标志以不再运行代码。实际上,在
viewModel
中执行此操作会更准确,但由于您特别想要这种方式,所以您可以查看此示例。

var workCompleted by rememberSaveable { mutableStateOf(false) }

    LaunchedEffect(Unit) {
        if (!workCompleted) {
            // your work
            workCompleted = true
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.