Android JobScheduler не запускает работу при появлении сети Wi-Fi

Я пытаюсь настроить JobScheduler для загрузки некоторых изображений на сервер через Wi-Fi. Вот как я это настроил:

    PersistableBundle params = new PersistableBundle();
    params.putString(UploadJobService.EXTRA_MEDIA, GsonFactory.getGson().toJson(mMedia));
    params.putString(UploadJobService.EXTRA_TEMP_ID, tempId);
    params.putInt(UploadJobService.EXTRA_IS_PUBLIC, mIsAlbumPublic.value());

    JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(this, UploadJobService.class));
    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
    builder.setPersisted(true);
    builder.setExtras(params);
    builder.setOverrideDeadline(DateUtils.HOUR_IN_MILLIS);
    JobScheduler.getInstance(this).schedule(builder.build());

Если сеть Wi-Fi доступна, она хорошо загружает мой контент. Но если я отключу его, принудительно запланирую службу, а затем включу Wi-Fi, загрузка не начнется.

Я делаю что-то неправильно ? Или JobScheduler не для этой цели и я должен использовать широковещательный приемник для доступности сети? Спасибо.


person oleg.semen    schedule 06.07.2015    source источник


Ответы (1)


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

У меня была такая же проблема, как и у вас, и я думаю, что для того, чтобы перенести задание, вам нужно указать

builder.setBackoffCriteria(long initialBackoffMillis, int backoffPolicy)

Когда я использую это, моя работа, которая не запускалась из-за отключенной сети, будет повторно запущена после этого начального периода BackoffMillis после того, как сеть снова будет включена. Я не совсем доволен этим, потому что я бы хотел, чтобы задание запускалось сразу после повторного включения сети, и, кроме того, при первой попытке запуска задания также используется задержка initialBackoffMillis. Но, по крайней мере, это точка для начала.

person a-m    schedule 11.12.2015