Похоже, что WorkManager использует AlarmManager для Android-версий старше 21 года, поскольку JobScheduler недоступен.См., Например, здесь .
Но при установке сетевого ограничения с WorkManager в следующих строках:
Constraints.Builder constraintsBuilder = new Constraints.Builder();
constraintsBuilder.setRequiredNetworkType(NetworkType.CONNECTED);
Constraints constraints = constraintsBuilder.build();
OneTimeWorkRequest.Builder workRequestBuilder = new OneTimeWorkRequest.Builder(MyWorker.class);
workRequestBuilder.setInitialDelay(5000, TimeUnit.MILLISECONDS);
workRequestBuilder.setConstraints(constraints);
При использовании JobScheduler поведение выглядит так, что запланированное заданиебудет просто сидеть там до тех пор, пока сеть не будет восстановлена, а затем немедленно сработает, потому что ограничения теперь выполнены.
Но сигналы тревоги немного отличаются и, естественно, не имеют связанных ограничений.Так как же на самом деле обрабатывается сетевое ограничение для Android <21, когда оно опирается на AlarmManager?Если сигнал тревоги срабатывает при отсутствии сети, что происходит тогда?Пока что мой ограниченный опыт заключается в том, что это плохо обрабатывается (или вообще), и мне интересно, нужно ли обрабатывать сетевое ограничение вручную, слушая <code>CONNECTIVITY_CHANGE?