Выполнить метод только один раз на основе обновления состояния составления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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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