Я думаю о реализации синхронизации в моем приложении для Android с ASyncTask
и AlarmManager
. Попытка сделать то же самое с SyncAdapter
, но это только усложняет процесс и имеет другие недостатки (требуется ContentProvider
, ручная синхронизация кажется невозможной, если автоматизирован, пользователь нужен и т. Д.).
Итак, у меня сейчас вопрос с ASyncTask
- скажем, он запускается каждые 24 часа. Но если в это время нет подключения к Интернету, синхронизация не произойдет. В следующий раз попытка произойдет через 24 часа. Что я могу сделать, чтобы избежать этого? То есть если уже прошло 24 часа, то при любом подключении к Интернету задача должна быть запущена. После этого момента следующие 24 часа будут засчитаны.
Например,
sync 1 - day 1 12:00 (successful)
sync 2 - day 2 12:00 (failed - no internet connection)
sync 3 - day 2 20:00 (successful, internet connection appeared)
sync 4 - day 3 20:00 (successful)
Поверьте, я могу либо выполнять свою задачу чаще (например, каждые 30 минут) и сохранять где-то время последнего обновления. Или я могу прослушать событие, когда появляется интернет-соединение. Каков наилучший подход? Или есть какой-то стандартный функционал для того же самого?