我需要将复杂的对象传递给WorkManager。或者我需要序列化包含Livedata和Date的对象。
它抛出java.lang.IllegalArgumentException:关键CabId2具有无效的类型类com.example.sonyadmin.data.Task
val data = workDataOf("cabinId2" to task)
val uploadWorkRequest = OneTimeWorkRequestBuilder<WManager>()
.setInputData(data)
.build()
答案 0 :(得分:2)
WorkManager的Data类仅接受某些特定类型作为值,如参考文档中所述:
一组持久的键/值对,用作ListenableWorkers的输入和输出。键是字符串,值可以是字符串,原始类型或其数组变体。
最重要的是,大小限制约为10KB,由常量MAX_DATA_BYTES
指定。
如果数据不是太大,则可能需要将其序列化为String并将其用作WorkRequest中的inputData。另一种方法是仅将对象的引用放入inputData中。 WorkManager's codelab的示例中,图像的URI被传递到WorkRequest中,并且图像在文件系统上。