Выполнить метод только один раз на основе обновления состояния составленияAndroid

Форум для тех, кто программирует под Android
Anonymous
Выполнить метод только один раз на основе обновления состояния составления

Сообщение Anonymous »

Я использую Аккомпаниатор, чтобы получить разрешение в моем приложении Compose. Когда разрешение предоставлено, я хочу вызвать метод в моей ViewModel, который выполняет сетевой запрос. Я хочу, чтобы этот метод вызывался только один раз после получения разрешения.
Вот что у меня пока:

Код: Выделить всё

val cameraPermissionState = rememberPermissionState(
android.Manifest.permission.CAMERA
)
LaunchedEffect(cameraPermissionState) {
if (cameraPermissionState.status == PermissionStatus.Granted) {
viewModel.callServerMethod()
}
}
Button(onClick = { cameraPermissionState.launchPermissionRequest() }) {
Text("Get permission")
}
Проблема здесь в том, что при изменении конфигурации (например, повороте устройства и т. д.) компонуемый объект создается заново, что приводит к повторному вызову LaunchedEffect и, следовательно, вызову метода ServerMethod.
Есть ли способ выполнить вызов ViewModel только в первый раз? Полагаю, мой вариант использования больше похож на событие, чем на состояние.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ate-update

Вернуться в «Android»