2

Мне нужно запланировать некоторую длительную сетевую задачу (загрузку файлов) в определенное время (например, в ночное время). Теперь это можно сделать с помощью планировщика заданий, но в документе говорится, что он должен использоваться для более коротких задач (менее 3 минут), другой вариант использует сервис с диспетчером аварийных сигналов, но это не рекомендуется. Итак, что выбрать между этими двумя или есть какой-то другой подход.Как запланировать длительные сетевые задачи в определенное время в Android?

+2

AlarmManager - единственный документированный способ, о котором я знаю. Что обескуражено? Где вы это нашли? –

ответ

1

Лучше всего использовать AlarmManager, чтобы запланировать IntentService, который будет работать в определенное время и в определенное время.

Вы хотите, чтобы аварийный огонь WakefulBroadcastReceiver, который затем запускает службу, потому что это звучит так, как будто ваша сетевая задача будет работать ночью, когда телефон спит. Это гарантирует, что услуга сразу же запускается, просто убедитесь, что блокировка бодрствования освобождается при выполнении задач!

Чтобы освободить wakelock, иметь это в конце вашей службы:

MyWakefulReceiver.completeWakefulIntent(intent); 

MyWakefulReceiver Где находится приемник, который вы сделали, который проходит WakefulBroadcastReceiver. Если вам нужна дополнительная помощь в настройке, дайте мне знать.