#android #kotlin #kotlin-coroutines
#Android #kotlin #kotlin-сопрограммы
Вопрос:
В настоящее время я играю с сопрограммами и потоками Kotlin. В моем сценарии a MutableStateFlow
представляет состояние соединения ( CONNECTING, CONNECTED, CLOSING, CLOSED
). Также можно войти в систему, выйти из системы и снова войти в систему.
Для дальнейшего использования соединения я должен проверить состояние и подождать, пока оно не будет CONNECTED
. Если оно уже CONNECTED
есть, я могу продолжить. Если нет, мне нужно подождать, пока состояние не достигнет CONNECTED
. connect()
Вызов возвращается немедленно, результат передается через обратный вызов, который обновляет MutableStateFlow
. Моя текущая идея состоит в том, чтобы сделать следующее:
connect()
if (connectionState.value != State.CONNECTED) { // connectionState = MutableStateFlow(State.CLOSED)
suspendCoroutine<Boolean> { continuation ->
scope.launch { // scope = MainScope()
connectionState.collect {
if (it == State.CONNECTED) {
continuation.resume(true)
}
}
}
}
}
// continue
Поскольку я довольно новичок в этой теме, я не знаю, является ли это хорошей практикой, и я также не смог найти более подходящую концепцию в документации Kotlin. Есть ли какой-нибудь лучший способ сделать это?