Я сталкиваюсь с проблемой с 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
Работник Coroutine иногда не обновляет прогресс с SetProgress в Workmanager ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Пользовательская инициализация WorkManager жалуется на WorkManager#initialize
Anonymous » » в форуме JAVA - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Пользовательская инициализация WorkManager жалуется на WorkManager#initialize
Anonymous » » в форуме Android - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Пользовательская инициализация WorkManager жалуется на WorkManager#initialize
Anonymous » » в форуме Android - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-