Как передать объект в качестве ввода в WorkManager без сериализации? - PullRequest
0 голосов
/ 27 апреля 2019

Мне нужно передать сложный объект в 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()

1 Ответ

2 голосов
/ 28 апреля 2019

Класс Данные WorkManager принимает только некоторые конкретные типы в качестве значений, как описано в справочной документации:

Постоянный набор пар ключ / значение, которые используются в качестве входов и выходовдля ListenableWorkers.Ключи - это строки, а значения могут быть строками, примитивными типами или вариантами их массивов.

Кроме того, существует ограничение размера около 10 КБ, определяемое константой MAX_DATA_BYTES.
Если данные не слишком велики, вы можете захотетьсериализовать его в строку и использовать его в качестве входных данных в вашем рабочем запросе.Альтернатива - просто поместить ссылку на ваши объекты в inputData. Кодовая метка WorkManager содержит пример этого, где URI изображения передается в WorkRequest, а изображение находится в файловой системе.

...