#android #android-download-manager #fuel
#Android #android-download-manager #топливо
Вопрос:
Я использую Fuel в своем коде Android для загрузки таких материалов, как PDF, аудио, видео, и это работает хорошо, проблема возникает, когда я хочу загрузить большой файл (50 МБ и> файл). Я читал о назначении потока топлива, но понятия не имею, как решить эту проблему. Вот мой код :
Fuel.download("https://$url")
.fileDestination { response, url ->
File(path, fileName)
}
.timeout(5000)
.response { request, response, result ->
result.fold(
success = {
progressDialog.dismissDialog()
listener.onDocDownloaded(fileName)
},
failure = {
progressDialog.dismissDialog()
}
}
Ответ №1:
Я нахожу решение благодаря Дерку-Яну Карренбельду. Здесь я просто помещаю рабочий код :
val outputStream = FileOutputStream(File(filePath))
_downloadStatus.postValue(FileDownloadStatus.Downloading)
Fuel.download(httpsedUrl)
.streamDestination { response, _ -> Pair(outputStream, { response.body().toStream() }) }
.fileDestination{response, request ->
File(filePath)
}
.progress { readBytes, totalBytes ->
val progress = readBytes.toFloat() / totalBytes.toFloat() * 100
println("Bytes downloaded $readBytes / $totalBytes ($progress %)")
}
.response { result ->
result.fold(
success = {
_downloadStatus.postValue(FileDownloadStatus.Downloaded)
},
failure = {
_downloadStatus.postValue(it.message?.let { it1 -> FileDownloadStatus.Failed(it1) })
}
)
}