从 WorkManager 的 Work/WorkInfo 获取最后更新时间
Get last updated time at from WorkManager's Work/WorkInfo
有什么方法可以得到完成或成功的工作时间戳吗?
WorkManager.getInstance().getWorkInfosByTagLiveData(groupId)
此代码给出 WorkInfo
.
我确定WorkManager
有时间戳可以管理Work
,但是如何获取呢?
我正在检查位于 /data/data/com.example/databases
的 androidx.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。
有什么方法可以得到完成或成功的工作时间戳吗?
WorkManager.getInstance().getWorkInfosByTagLiveData(groupId)
此代码给出 WorkInfo
.
我确定WorkManager
有时间戳可以管理Work
,但是如何获取呢?
我正在检查位于 /data/data/com.example/databases
的 androidx.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。