Android JobScheduler - setRequiredNetworkType не работает - PullRequest
0 голосов
/ 15 октября 2019

Я попытался сделать JobScheduler с 1 условием простого ограничения: setRequiredNetworkType (JobInfo.NETWORK_TYPE_ANY)

JobScheduler jobScheduler = (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(mContext.getPackageName(), JobOneService.class.getName());
JobInfo jobInfo = new JobInfo.Builder(1, componentName)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .setPersisted(true)
        .build();
jobScheduler.schedule(jobInfo);

JobOneService расширен классом JobService. Я попытался смоделировать условие, кстати: выключить, а затем включить сеть Wi-Fi. Но метод onStartJob () вызывается не всегда (вызывается с перебоями).

Кто-нибудь может помочь мне объяснить, почему onStartJob () не всегда вызывается, когда я включаю соединение Wi-Fi? Спасибо

1 Ответ

2 голосов
/ 15 октября 2019

В документации они упоминали, что setRequiredNetworkType используется для

Вызов этого метода определяет сеть как строгое требование для вашей работы. Если запрашиваемая сеть недоступна, ваша работа никогда не будет выполняться.

Таким образом, он проверяет сетевое подключение. Если сеть подключена, то ваша работа будет выполняться, иначе ваша работа не будет работать. Если вы хотите, чтобы при повторном подключении к сети ваша работа должна была выполняться, вы должны написать свою логику для этого. Лучше использовать WorkManager, потому что WorkManager обрабатывает его правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...