Работник Coroutine иногда не обновляет прогресс с SetProgress в WorkmanagerAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Работник Coroutine иногда не обновляет прогресс с SetProgress в Workmanager

Сообщение Anonymous »

Я сталкиваюсь с проблемой с Workmanager, когда обновления прогресса не отправляются последовательно от работника Coroutine, даже если я правильно звоню SetProgress. Полем Например, Fileuplaodsatte находится в процессе файла, затем завершенное состояние. Завершенное состояние иногда не отправляет зачем? Также когда -то, когда прогресс в файле составляет 80 процентов после того, как я обновляю 100%, тогда мгновенно файл завершается состоянием, 100% состояние пропускается. Завершенное состояние обновляется зачем? < /P>
private suspend fun updateUploadState(messageId: Long, state: FileUploadState) {
try {
if (!isStopped) {
withContext(Dispatchers.IO) {
setProgress(
workDataOf(
"messageId" to messageId,
"state" to serializeFileUploadState(state)
)
)
}
}
} catch (_: IllegalStateException) { }
}

< /code>
Я читаю прогресс с помощью < /p>
val workInfoList by WorkManager.getInstance(context)
.getWorkInfosFlow(WorkQuery.fromUniqueWorkNames("visual_media_upload_${viewModel.chatId}_${message.id}"))
.collectAsState(null)

LaunchedEffect(workInfoList) {

// Find the relevant work and retrieve the messageId and state
workInfoList?.firstOrNull()?.let { workInfo ->

val workerState = workInfo.state // WorkInfo state is important here

if (workerState == WorkInfo.State.CANCELLED) {
CoroutineScope(Dispatchers.IO).launch {
viewModel.repository.updateMessage(
message.id,
ChatMessageStatus.QUEUED_MEDIA_RETRY
)
}
} else {
val progressMessageId = workInfo.progress.getLong("messageId", -1)
val state = workInfo.progress.getString("state")

Log.e(TAG,"UI state: $state")

if (progressMessageId != -1L && state != null) {
viewModel.updateUploadState(
progressMessageId,
deserializeFileUploadState(state)
)
}
}

}

}

< /code>
Журналы: 100% (загруженный размер 127784) не обновлен, даже я отправляю 100% < /p>
2025-01-30 16:34:54.553 22955-22955 UI state: null
2025-01-30 16:34:54.557 22955-22955 UI state: null
2025-01-30 16:34:54.764 22955-22955 UI state: {"type":"com.super6.pot.ui.chat.viewmodels.FileUploadState.Started"}
2025-01-30 16:34:57.022 22955-22955 UI state: {"type":"com.super6.pot.ui.chat.viewmodels.FileUploadState.InProgress","uploadedSize":127784}

Progress: 76%, File Size: 166203, Uploaded: 127784

2025-01-30 16:34:57.519 22955-22955 UI state: {"type":"com.super6.pot.ui.chat.viewmodels.FileUploadState.Completed"}


Подробнее здесь: https://stackoverflow.com/questions/793 ... orkmanager
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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