Получить текущий список активных заданий в android-priority-jobqueue

Я хотел бы знать, есть ли рекомендуемый способ получения списка активных заданий в https://github.com/yigit/android-priority-jobqueue

Таким образом, если у меня все еще есть постоянные задания, я могу сообщить пользователю, какие из них.

1 ответ

Решение

Мы не предоставляем такой API, потому что это может привести к неправильному использованию. например, проверка работы, если она существует, чтобы решить, следует ли добавить или нет (потому что это рецепт для условий гонки).

Если вам это действительно нужно, вы можете переопределить постоянную очередь и предоставить собственную очередь, где вы можете отслеживать добавления / удаления заданий. См. Конфигурационный WIKI JobManager для деталей:

https://github.com/yigit/android-priority-jobqueue/wiki/Job-Manager-Configuration

редактировать: пример условия гонки

Кто-то может написать такой код:

if (!jobManager.hasJobOfType(ImportantJob.class)) {
    jobManager.addJob(new ImportantJob());
} else {
    // it is already added, no need to re add
}

Здесь есть потенциальное состояние гонки hasJobOfType возвращает значение true, но между тем задание будет отменено. Теперь нет задания для запуска: /. Другое условие гонки, где-то еще код мог бы вызвать addJobInBackground поэтому он будет добавлен, но еще не добавлен во время hasJobOfType вызов.

Лучшее решение для таких случаев - воссоздать другую работу в onCancel или ручная обработка отмены предыдущих заданий в методе onRun (с глобальным счетчиком и т. д.). Другой вариант заключается в использовании cancelAsync метод с его версией обратного вызова.

http://yigit.github.io/android-priority-jobqueue/javadoc/index.html

Другие вопросы по тегам