【发布时间】:2019-10-18 18:25:01
【问题描述】:
我正在尝试使用 WorkManager 将位图上传到服务器。基本上,用户拍照并按下按钮将其上传到服务器。
但是,当我尝试使用 Work Manager 的 Data.Builder 类对位图进行序列化时,问题就出现了,该类的限制为 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
我总是可以在启动工作管理器之前将照片保存到文件中,然后在工作管理器中读取文件。但是,如果可能的话,我宁愿避免所有文件管理,因为用户总是可以关闭应用程序等。
如果服务器响应成功,我只想保存文件。
还有其他方法可以实现吗?这类事情有谷歌“建议”吗?
这是我的 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()
}
}
【问题讨论】:
标签: android kotlin android-workmanager