Получить текущий список активных заданий в 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