EnqueueWork не запускается сразу на Oreo и выше - PullRequest
0 голосов
/ 31 марта 2019

в моем SDK я использую JobIntentService для работы в фоновом режиме.Я заметил, что работа не начинается сразу, когда я звоню enquequeWork(), но начинается позже.Я не могу использовать foreground service для выполнения работы, потому что приложение не может работать в качестве переднего плана по запросу клиента.Есть ли другой способ заставить работу выполнить ее сразу после вызова enqueueWork()?Я также использую WorkManager PeriodicWorkRequest, чтобы проверить, можно ли выполнить работу, каждые X минут и, если это так, я вызываю JobIntentService и ставлю в очередь нужную мне работу.

1 Ответ

2 голосов
/ 31 марта 2019

Есть ли другой способ заставить работу выполняться сразу после вызова enqueueWork ()?

Нет. JobIntentService использует JobScheduler, а JobScheduler запускает задания, когда решает.

Я также использую PeriodicWorkRequest от WorkManager, чтобы проверять, можно ли выполнить работу, каждые X минут и, если да, я вызываю JobIntentService и ставлю в очередь нужную мне работу.

Вы можете рассмотреть возможность упрощения своего кода и просто выполнять свою работу в своем Worker, если единственным поставщиком работы для JobIntentService является Worker. Или, чтобы фактическая «работа» была выполнена классом, который может использоваться либо вашим Worker, либо вашим JobIntentService. Как JobIntentService использует JobScheduler, так и WorkManager. Ваша текущая система, похоже, имеет задание, просто запускающее другое задание, и вы можете уменьшить время ожидания, объединив его.

...