Бьюсь с этой проблемой уже долгое время. Исход таков: на китайских телефонах в фоновом режиме всё отваливается или же начинается дублирование воркеров (что редко).
Проводя некоторое тестирование в воркерах без работы с сетью (например каждую минуту отправлять уведомления пользователю в фоновом режиме) — всё работает замечательно. Как начинаю работать с сетью в воркерах — всё, там завал. Неизвестно, как так получается.
public class LongPoll extends Worker {
public LongPoll(Context c, WorkerParameters p) {
super(c, p);
}
public Result doWork() {
try {
// здесь выполняется ожидающий запрос
} catch (Exception e) {}
// после выполнения HTTP-запроса запускаю повторную задачу
return Result.success();
}
}
Я пробовал и уникальные задачи и задачи с тэгами, ну не работает оно в фоновом режиме нормально. Firebase лучше не предлагать как замену, уже работали с ним — печальный опыт. Да и посредников иметь не хочется. Android позиционирует Worker's как хорошую альтернативу фоновым и устаревшим сервисам. Ну пока ничего не получается. Помогите, пожалуйста.