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. https://developer.android.com/reference/android/app/DownloadManager.html
https://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:https://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:
https://developer.android.com/training/notify-user/build-notification.html
https://www.tutorialspoint.com/android/android_notifications.htm
https://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.