Decidí acudir a ustedes porque son los expertos
primero i am not expert
y también i am not knowledgeable
puedes encontrar gente más experta que yo pero esta es mi opinión hope to give you some help
.
en primer lugar, olvide usar AsyncTask
para descargar porque debe usarse para trabajos cortos en segundo plano que no son como el suyo. Creo que la cantidad de archivos que desea descargar es bastante grande. (Eso creo)
comprobar downloadmanager
de google para ver cómo funciona, puede ayudarte.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-ejemplo/
si desea utilizar service
usar unbound service
porque no desea que Android o el usuario destruyan el servicio cuando el usuario cierre las aplicaciones, ¿verdad? Creo que quieres obtener tus datos de cualquier forma.
para ser eficiente recomiendo estos pasos:
una. Lea un servicio reparador para recuperar los datos de los clientes
b. cuando obtenga los datos del cliente, haga:
-
cree otro servicio o hilo para leer un servicio tranquilo para recuperar los datos de los artículos
-
Analice la respuesta a Json Objects en su antiguo servicio o hilo
ahora tiene 2 servicios o subprocesos que se ejecutan simultáneamente, así que siga los pasos que obviamente insert
parse
y así, en cada servicio o hilo.
¿Por qué no combino a y d? porque creo que al usuario no le gusta esperar mucho tiempo detrás de la barra de progreso de la descarga.
para insertar sus datos en la base de datos, use transaction
y te recomiendo que uses:
http://greendao-orm.com/
es más eficiente ORM
que otros para la base de datos y se libera de la implementación de db.
Si la actividad que inició el servicio se cancela explícitamente o está oculta por otra actividad, el servicio debe tener una forma de informar al usuario que el proceso ha finalizado. ¿Cómo podría implementar eso?
usar notificación:
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
Mientras todo este largo procesamiento se lleva a cabo en segundo plano, tendré que mostrar algún tipo de indicador (un ProgressDialog). Esta es la razón por la que opté por usar un servicio enlazado`
¿Cómo puedo actualizar la interfaz de usuario desde un servicio independiente?`
Usa un LocalBroadCastManager
, o en general BroadCastReciever
IU de actividad de actualización de Android desde el servicio
En J2ME he hecho algo similar, y cuando pongo algo como los 6 pasos que mencioné arriba, todos se ejecutan secuencialmente, es decir, uno tras otro. ¿Es lo mismo en Android?
esto depende de tus pasos, si sigues mi idea, ejecutas concurrently
y si ejecuta su idea, ejecutará sequentially
.
Buena suerte.