Eu decidi vir até você porque você é o especialista
primeiro
i am not expert
e também i am not knowledgeable
você pode encontrar mais especialistas do que eu, mas esta é minha opinião hope to give you some help
. antes de tudo, esqueça de usar
AsyncTask
para baixar porque deve ser usado para trabalhos em segundo plano curtos, não como o seu, acho que a quantidade de arquivo que você deseja baixar é muito grande. (acho que sim) verifique
downloadmanager
do google para ver como funciona pode te ajudar. http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
se você quiser usar
service
use unbound service
porque você não quer que o serviço seja destruído pelo android ou usuário quando o usuário fechar os aplicativos não é? eu acho que você quer obter seus dados de qualquer maneira. para ser eficiente, recomendo estas etapas:
uma. Leia um serviço tranquilo para recuperar os dados dos clientes
b. quando você obtém os dados do cliente, faça:
-
crie outro serviço ou thread para ler um serviço tranquilo para recuperar os dados dos artigos
-
Analise a resposta aos objetos Json em seu serviço ou encadeamento antigo
agora você tem 2 serviços ou threads que são executados simultaneamente, então siga as etapas óbvias
insert
parse
e assim, em cada serviço ou thread. por que não combino a e d? porque eu acho que o usuário não gosta de esperar muito tempo atrás da barra de progresso do download.
para inserir seus dados no banco de dados use
transaction
e eu recomendo que você use:http://greendao-orm.com/
é mais eficiente
ORM
do que outros para banco de dados e você fica livre da implementação de banco de dados.
Se a atividade que iniciou o serviço for explicitamente cancelada ou ocultada por outra atividade, o serviço deve ter uma maneira de informar ao usuário que o processo foi concluído. Como eu poderia implementar isso?
usar notificação:
http://developer.android.com/training/notify-user/build-notification.html
http://www.tutorialspoint.com/android/android_notifications.htm
http://www.vogella.com/tutorials/AndroidNotifications/article.html
Enquanto todo esse longo processamento está ocorrendo em segundo plano, terei que mostrar algum tipo de indicador (um ProgressDialog) Esta é a razão pela qual optei por usar um Bound Service`
como posso atualizar a interface do usuário de um serviço não vinculado?`
Use um
LocalBroadCastManager
, ou em geral BroadCastReciever
UI de atividade de atualização do Android do serviço
No J2ME fiz algo parecido, e quando coloco algo como os 6 passos que mencionei acima todos eles são executados sequencialmente, ou seja, um após o outro. É o mesmo no Android?
isso depende de suas etapas, se você seguir minha ideia, execute
concurrently
e se você executar sua ideia, executará sequentially
. Boa sorte.