Я пытаюсь использовать WorkManager для загрузки растрового изображения на сервер. Обычно пользователь делает снимок и нажимает кнопку, чтобы загрузить его на сервер.
Однако проблема возникает, когда я пытаюсь сериализовать растровое изображение с помощью класса Work.Builder Work Manager, который имеет ограничение в 10240 байтов. Поэтому, если я сделаю следующее:
val data = Data.Builder()
//Add parameter in Data class. just like bundle. You can also add Boolean and Number in parameter.
data.putString(IMAGE_NAME, identifier)
data.putByteArray(BITMAP_ARRAY, imageBytes)
Будет получен следующий сбой java.lang.IllegalStateException: Data cannot occupy more than 10240 bytes when serialized
Я всегда могу сохранить фотографию в файл перед запуском менеджера работ и в работеменеджер прочитал файл. Однако я бы по возможности избегал всякого управления файлами, потому что пользователь всегда мог закрыть приложение и т. Д.
Я просто хотел сохранить файл, если сервер ответил успешно.
IsЕсть ли другой способ добиться этого? Есть ли в Google "предложение" для такого рода вещей?
Вот мой doWork()
функционал WorkManager
override fun doWork(): Result {
val identifier = inputData.getString(IMAGE_NAME)!!
val imageBytes = inputData.getByteArray(BITMAP_ARRAY)!!
val result = executeRequest(identifier, imageBytes)
return if (result.isSuccess()) {
//saving image
val bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
saveToInternalStorage(context, identifier, bitmap)
Result.success()
} else {
Result.failure()
}
}