我需要将复杂的对象传递给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()
WorkManager的Data类仅接受某些特定类型作为值,如参考文档中所述:
一组可持久的键/值对,用作ListenableWorkers的输入和输出。键是字符串,值可以是字符串,基本类型或其数组变体。
最重要的是,大小限制大约为10KB,由常量MAX_DATA_BYTES
指定。
如果数据不是太大,您可能希望将其序列化为String并在WorkRequest中将其用作inputData。另一种方法是在inputData中放置对象的引用。 WorkManager's codelab有一个示例,其中图像的URI传递到WorkRequest,图像在文件系统上。