从 WorkManager 的 Work/WorkInfo 获取最后更新时间

Get last updated time at from WorkManager's Work/WorkInfo

有什么方法可以得到完成或成功的工作时间戳吗?

WorkManager.getInstance().getWorkInfosByTagLiveData(groupId) 此代码给出 WorkInfo.

我确定WorkManager有时间戳可以管理Work,但是如何获取呢?

我正在检查位于 /data/data/com.example/databasesandroidx.work.workdb 文件。从 WorkManager 2.2.0 开始,这里是 WorkSpec table:

中的列
  • id(例如 dbe0dcd0-ab76-4c1e-a963-be2135f41c3c)
  • 状态(例如 2)
  • worker_class_name(例如com.example.MyWorker)
  • input_merger_class_name(大部分为空,但也有androidx.work.OverwritingInputMerger
  • 输入
  • 输出
  • 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)
  • requires_charging(例如 0)
  • requires_device_idle(例如 0)
  • requires_battery_not_low(例如 1)
  • requires_storage_not_low(例如 0)
  • trigger_content_update_delay(例如-1)
  • trigger_max_content_delay(例如-1)
  • content_uri_triggers

可以推断,不存在一个字段,它会反映特定工作完成时的时间戳,因为根据我的理解WorkManager不需要那个字段。

因此,您唯一的选择是在工作成功完成后使用共享首选项或其他 SQLite 手动保存时间戳 table。