2016-06-16 3 views
0

Я планирую работу, используя работу Планировщик службы. Условием для начала моей работы является наличие любого network(setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)). В первый раз я планирую задание с пользовательского ввода (скажем: нажатие кнопки), поэтому, когда пользователь нажимает кнопку, как только сеть будет доступна, моя работа начнется.
Планировщик приложений для Android: выполняйте задание, когда есть сеть данных

Мой вопрос: моя работа должна начинаться без ввода пользователем в течение последующего времени. Это возможно? Если да, пожалуйста, предложите.

(я не хочу слушать изменения сетевого слушателя. Так как она имеет некоторые ограничения с Android N и выше)

ответ

0

Да это возможно с JobInfo.Builder посмотреть на https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setMinimumLatency(long)

и может быть используется в сочетании с https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiredNetworkType(int)

+0

Согласно моему пониманию, setPeriodic будет выполнять задание после определенного времени, а не сразу, как только сеть будет доступна. Мне нужно выполнить свою задачу, как только сеть будет доступна. – user2724311

+0

Как насчет объединения ее с setMinimumLatency (long minLatencyMillis)? Это минус-время, которое должно быть передано перед выполнением задачи. Думаю, пока нет сети, она не будет выполнена. Как только сеть вернется и прошло минус-время, она выполнит ее? А потом в jobFinished перепланировать его? – QVDev

0

да вы можете установить в строитель

setBackoffCriteria

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

builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); 
    builder.setPeriodic(TimeUnit.DAYS.toMillis(1)); 
    builder.setBackoffCriteria(1000, JobInfo.BACKOFF_POLICY_EXPONENTIAL);