Получить последнее обновленное время от WorkManager's Work / WorkInfo - PullRequest
1 голос
/ 10 января 2020

Есть ли способ получить окончательную или успешную метку времени работы?

WorkManager.getInstance().getWorkInfosByTagLiveData(groupId) этот код дает WorkInfo.

Я уверен, что WorkManager имеет метки времени для управления Work, но как его получить?

1 Ответ

2 голосов
/ 13 января 2020

Я проверяю файл androidx.work.workdb, который находится в /data/data/com.example/databases. Начиная с WorkManager 2.2.0, есть столбцы, которые присутствуют в таблице WorkSpec:

  • id (например, dbe0dcd0-ab76-4c1e-a963-be2135f41c3 c)
  • состояние (например, 2)
  • имя_работного_класса (например, com.example.MyWorker)
  • input_merger_class_name (преимущественно нулевое, но также androidx.work.OverwritingInputMerger)
  • input
  • output
  • initial_delay (например, 300000)
  • interval_duration (например, 900000)
  • flex_duration (например, 900000)
  • run_attempt_count (например, 1)
  • backoff_policy (например, 0)
  • backoff_delay_duration (например, 30000)
  • period_start_time (например, 1578901635581)
  • num_retention_duration (например, 0)
  • schedule_requested_at например ( 1578901635601)
  • required_network_type (например, 1)
  • require_charging (например, 0)
  • require_device_idle (например, 0)
  • require_battery_not_low (например, 1)
  • require_storage_not_low (например, 0)
  • trigger_content_update_delay (например, -1)
  • trigger_max_conten t_delay (например, -1)
  • content_uri_triggers

Как можно заключить, не существует поля, которое будет отражать метку времени, когда конкретная работа была завершена, поскольку согласно моему пониманию, WorkManager не нуждается в этом поле.

Следовательно, при успешном завершении работы ваш единственный вариант - вручную сохранить временную метку, используя общие префы или другую таблицу SQLite.

...