Вопросы проектирования Android: AsyncTask vs Service (IntentService?)
Я разрабатываю приложение для Android, которое должно выполнить следующие шаги:
пользователь нажимает кнопку или иным образом указывает на «синхронизацию данных».Процесс синхронизации будет использовать веб-сервисы REST для перемещения данных на сервер и с него.данные будут храниться локально в базе данных sqlite.процесс синхронизации должен предоставлять обновления статуса / сообщения для пользовательского интерфейсаПользователю не должно быть позволено уходить в другие части приложения и выполнять больше работы во время процесса синхронизации.При первом запуске процесса синхронизации это может занять 10-20 минут. После начальной синхронизации меньше данных будет передано и сохранено, и я ожидаю, что процесс займет 1-2 минуты или меньше.
Я много читал о AndroidAsyncTask
и различные примеры использования Сервиса ... Но я не до конца понимаю конструктивные соображения и компромиссы выбора одного дизайна над другим. В настоящее время мой демо-проект заглушен с помощью AsyncTask. После просмотра (большей части) разработки клиентских приложений REST для Android:http://code.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html# Я запутался в том, что шаблоны проектирования, описанные здесь, кажутся слишком сложными, возможно, потому что я просто «еще не понял».
Я родом из Java, Spring, веб и настольных приложений. Мышление и проектирование с точки зрения портативного устройства для меня совершенно новое. (Что происходит при изменении макета экрана? Что происходит, когда телефон звонит, когда я запускаю синхронизацию?) Если сделать 2 шага назад, если начальная синхронизация будет таким длительным процессом, есть ли лучший способ для этого? мне подумать о проблеме -> решение, пользовательский опыт, пользовательские ожидания от приложения, работающего на телефоне?
Хотелось бы услышать от более опытных разработчиков Android, которые уже боролись с этими вопросами.