Considerações sobre o design do Android: AsyncTask vs Service (IntentService?)

Estou projetando um aplicativo Android que precisará executar as seguintes etapas:

o usuário aperta um botão ou indica "sincronizar dados".O processo de sincronização usará os serviços web REST para mover dados de e para o servidor.os dados serão armazenados localmente em um banco de dados sqlite.o processo de sincronização deve fornecer atualizações / mensagens de status para a interface do usuárioo usuário não deve se deslocar para outras partes do aplicativo e fazer mais trabalho durante o processo de sincronização.

A primeira vez que o processo de sincronização é executado, pode levar de 10 a 20 minutos. Após a sincronização inicial, menos dados serão transferidos e armazenados e espero que o processo leve 1-2 minutos ou menos.

Eu tenho lido muito sobre o AndroidAsyncTask e vários exemplos de uso de um serviço ... Mas não entendo completamente as considerações e vantagens do design de escolher um design sobre o outro. Atualmente, meu projeto de demonstração foi implementado usando um AsyncTask. Depois de assistir (a maioria) ao desenvolvimento de aplicativos clientes REST Android:http://code.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html# Estou confuso que os padrões de design descritos aqui pareçam excessivamente complexos, talvez porque eu ainda "não entendi".

Eu venho de um fundo de aplicativos java, spring, web e desktop. Pensar e projetar em termos de um dispositivo portátil é bastante novo para mim. (O que acontece quando o layout da tela é alterado? O que acontece quando o telefone toca enquanto eu estou executando uma sincronização?) Dando 2 passos para trás, se a sincronização inicial for um processo de execução tão demorado, existe uma maneira melhor de pensar sobre o problema-> solução, a experiência do usuário, as expectativas do usuário de um aplicativo em execução no telefone?

Gostaria de ouvir de alguns desenvolvedores Android mais experientes por aí que já lutaram com essas perguntas.

questionAnswers(5)

yourAnswerToTheQuestion