Я использую WorkManager , чтобы запланировать как периодическую, так и разовую работу, и я помечаю все работы одним и тем же тегом, чтобы позже его можно было идентифицировать:
workRequestBuilder.addTag("mywork");
С различными рабочими элементами, поставленными в очередь, в разное время в будущем я хотел бы получить способ запроса рабочей очереди, чтобы определить, когда запланировано выполнение работы next для этого конкретного тега ("mywork"
). Да, я знаю, что он не будет точным и будет зависеть от Doze и т. Д., Но все равно было бы полезно знать, когда - в отсутствие других факторов - работа может начаться.
Я знаю, как запросить очередь работ и выбрать поставленные в очередь рабочие элементы следующим образом, но я просто не уверен, как определить, на какое время запланирован запуск каждого рабочего элемента:
WorkManager workManager = WorkManager.getInstance();
ListenableFuture<List<WorkInfo>> workInfos = workManager.getWorkInfosByTag("mywork");
try {
List<WorkInfo> workInfoList = workInfos.get();
for (WorkInfo workInfo : workInfoList) {
WorkInfo.State state = workInfo.getState();
if (state == WorkInfo.State.ENQUEUED) {
UUID workerId = workInfo.getId();
Log.d(TAG, "found enqueued work with id " + workerId);
// BUT HOW DO I TELL WHAT TIME THIS WORK IS SCHEDULED TO RUN?
}
}
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}