У меня есть задача, которую нужно запустить в фоновом режиме в моем приложении для Android. Он читает данные по сети и заполняет базу данных. Запуск может занять несколько минут.
После запуска он должен успешно завершиться без перерыва. (В противном случае я получу сломанную наполовину заполненную базу данных.) Я понимаю, что никогда не смогу гарантировать, что она будет всегда завершена, но я хочу сделать так, чтобы система как можно сложнее убила это задача. В целях безопасности, я полагаю, он заполняет временную базу данных, а затем только заменяет старую базу данных на новую после успешного завершения импорта.
Это модальная операция; для пользователя не имеет смысла взаимодействовать с приложением во время импорта.
Моя первая попытка - использовать ASyncTask с диалоговым окном Progress для достижения модальности, но это явно нарушает требование «не прерывать». Я мог бы обойти проблему поворота экрана с помощью ASyncTasks, но я не думаю, что это заходит достаточно далеко.
В данный момент я не уверен, должен ли это быть ASyncTask, Сервис, IntentService, какая-то их комбинация или что-то совсем другое. Вы можете помочь мне решить?