如何在工作管理器中传递大于1024字节的数据?

时间:2019-04-12 14:32:11

标签: android-workmanager

我已使用工作管理器将图像上传到火力基地。 我将Interaction Report Class转换为JsonString并将其作为参数发送给工作管理器,以便可以将其反序列化回Original对象并使用图像详细信息中的url,否则我将不得不发送每个url。 但是在某些情况下,它会引发异常:

  

不能发送超过1024字节的数据

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

不能。这是WorkManager的Data类的已记录限制。请参阅https://developer.android.com/reference/androidx/work/Data,其中列出:

“这是一个轻型容器,因此不应视为您的数据存储。因此,有效负载的序列化(字节数组)大小受到强制的MAX_DATA_BYTES限制。如果您尝试序列化,此类将抛出IllegalStateExceptions或反序列化超出此限制。”

答案 1 :(得分:0)

您不能,但是也许此解决方案可以在某些情况下通过压缩和解压缩数据来帮助您。

尝试压缩并将其放入Data.Builder()

invoke

并在Worker类中将其解压缩

@Throws(IOException::class)
fun compress(str: String?): String? {
    if (str == null || str.length == 0) {
        return str
    }
    println("String length : " + str.length)
    val out = ByteArrayOutputStream()
    val gzip = GZIPOutputStream(out)
    gzip.write(str.toByteArray())
    gzip.close()
    val outStr = Base64.encodeToString(out.toByteArray(), Base64.DEFAULT)
    println("Output String lenght : " + outStr.length)
    println("Output : $outStr")
    return outStr
}