Обновить пользовательский интерфейс из Workmanager - PullRequest
0 голосов
/ 18 сентября 2018

Как обновить пользовательский интерфейс из Android WorkManager.

Android Workmanager может получать логические, целые, длинные, с плавающей запятой, двойные, строковые

Документация гласит:

public Data.Builder putAll (Map<String, Object> values)

"Помещает все входные пары ключ-значение в Builder. Допустимые типы: Boolean, Integer, Long, Float, Double, String и версии массива каждого из этих типов. Недопустимые типы генерируют исключение IllegalArgumentException."

  1. Как передать обратный вызов для обновления интерфейса.
  2. Как передать POJO без вызова БД.

Result.SUCCESS или Result.FAILURE не является решением, так как оно будет возвращено только после завершения работы.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Прежде всего, WorkManager - это API для отложенной фоновой работы.Если вы ожидаете, что приложение будет отображать обновления на переднем плане, возможно, это неправильный API. Документация WorkManager охватывает эту .

Секунду, androidx.work.Data документацию состояния:

Это легкий контейнер, и его не следуетсчитал ваше хранилище данных.Таким образом, существует принудительное ограничение MAX_DATA_BYTES на сериализованный (байтовый массив) размер полезных нагрузок.Этот класс будет выдавать IllegalStateExceptions, если вы попытаетесь сериализовать или десериализовать после этого предела.

Поскольку WorkManager является частью компонентов архитектуры Android, хорошим решением является использование LiveData для передачи обновлений состояния между фоновым заданием.и (в конечном итоге на переднем плане) пользовательский интерфейс.

Это показано в кодовой метке WorkManager.

Шаг 8. Тег и отображение рабочего статуса ,охватывает этот момент.

0 голосов
/ 18 сентября 2018

Если вы хотите обновить пользовательский интерфейс службы, вы можете использовать связанную службу, проверьте этот вопрос для получения более подробной информации. Интерфейс активности обновления Android из службы

...