如何在没有序列化的情况下将对象作为输入传递给WorkManager?

问题描述 投票:0回答:1

我需要将复杂的对象传递给WorkManager。或者我需要序列化包含Livedata和Date的对象。

它抛出java.lang.IllegalArgumentException:Key cabinId2具有无效的类型类com.example.sonyadmin.data.Task

     val data = workDataOf("cabinId2" to task)
     val uploadWorkRequest = OneTimeWorkRequestBuilder<WManager>()
         .setInputData(data)
         .build()
android-workmanager
1个回答
2
投票

WorkManager的Data类仅接受某些特定类型作为值,如参考文档中所述:

一组可持久的键/值对,用作ListenableWorkers的输入和输出。键是字符串,值可以是字符串,基本类型或其数组变体。

最重要的是,大小限制大约为10KB,由常量MAX_DATA_BYTES指定。 如果数据不是太大,您可能希望将其序列化为String并在WorkRequest中将其用作inputData。另一种方法是在inputData中放置对象的引用。 WorkManager's codelab有一个示例,其中图像的URI传递到WorkRequest,图像在文件系统上。

© www.soinside.com 2019 - 2024. All rights reserved.